我要求在页面加载之前我想检查查询字符串是否存在,如果查询字符串存在,那么我想重定向到另一个页面而不是当前页面如何处理这种类型的需求JSF 2。
提前致谢
答案 0 :(得分:27)
在JSF 2.2上,您可以使用<f:viewAction>
。
<f:metadata>
<f:viewParam name="paramName" value="#{bean.paramName}" />
<f:viewAction action="#{bean.check}" />
</f:metadata>
(paramName
是查询字符串参数的名称)
private String paramName; // +getter+setter
public String check() {
if (paramName == null) {
return "error.xhtml";
}
return null;
}
当还没有使用JSF 2.2时(JSF 2.0 / 2.1),您可以使用<f:event type="preRenderView">
。
<f:metadata>
<f:viewParam name="paramName" value="#{bean.paramName}" />
<f:event type="preRenderView" listener="#{bean.check}" />
</f:metadata>
private String paramName; // +getter+setter
public void check() throws IOException {
if (paramName == null) {
FacesContext.getCurrentInstance().getExternalContext().redirect("error.xhtml");
}
}