Это должно получить Вас достаточно близкий:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ForceDataValidation();
}
private static void ForceDataValidation()
{
TextBox textBox = Keyboard.FocusedElement as TextBox;
if (textBox != null)
{
BindingExpression be = textBox.GetBindingExpression(TextBox.TextProperty);
if (be != null && !textBox.IsReadOnly && textBox.IsEnabled)
{
be.UpdateSource();
}
}
}
Это не поможет вам создать ссылку на клиенте, но помните о outputLink .
Существует элемент перенаправления для правил навигации, который может помощь при некоторых проблемах с обновлением.
<navigation-rule>
<display-name>navBack</display-name>
<from-view-id>/navBack.jsp</from-view-id>
<navigation-case>
<from-outcome>navTo</from-outcome>
<to-view-id>/navTo.jsp</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
Если ничего не помогает, вы можете сделать URL перенаправления самостоятельно, как в этом действии:
public String doAction() {
System.out.println("Did some non-idempotent operation");
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();
Application app = context.getApplication();
ViewHandler viewHandler = app.getViewHandler();
String url = viewHandler.getActionURL(context, "/navTo.jsp");
url = url + (url.indexOf('?') < 0 ? '?' : '+') + "foo=bar";
url = extContext.encodeResourceURL(url);
try {
extContext.redirect(url);
} catch (IOException e) {
throw new FacesException(e);
}
return null;
}
Предостережения: я не могу вспомнить, правильно ли я кодирую URL.
Различные Сторонние библиотеки добавляют различные функции. Я не уверен, было ли что-то сделано в JSF 2.0 в этой области, но, возможно, стоит взглянуть на это.
Ага. JSF построен на основе POST, и это одна из самых больших проблем JSF. Взгляните на JAX-RS / Seam или Spring для закладок GETable страниц.