Как выполнить навигацию в методе прослушивателя preRenderView
Я начинаю сДля чего могут использоваться <f: metadata>, <f: viewParam> и <f: viewAction>?
У меня есть прослушиватель события предварительного просмотра:
<f:metadata>
<f:event type="preRenderView" listener="#{loginBean.performWeakLogin()}" />
</f:metadata>
который вызывает следующий метод:
public String performWeakLogin() {
FacesContext facesContext = FacesContext.getCurrentInstance();
String parameter_value = (String) facesContext.getExternalContext().getRequestParameterMap().get("txtName");
if (parameter_value != null && parameter_value.equalsIgnoreCase("pippo")) {
try {
return "mainPortal";
} catch (IOException ex) {
return null;
}
} else {
return null;
}
}
и следующее правило навигации:
<navigation-rule>
<from-view-id>/stdPortal/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>mainPortal</from-outcome>
<to-view-id>/stdPortal/stdPages/mainPortal.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
Тем не менее, он не выполняет навигацию. Это работает, когда я использую командную кнопку следующим образом:
<p:commandButton ... action="#{loginBean.performWeakLogin()}" />