Это не поможет вам создать ссылку на клиенте, но помните о 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 в этой области, но это может стоить посмотреть.