【问题标题】:Redirect before loading the page in JSF2 [duplicate]在JSF2中加载页面之前重定向[重复]
【发布时间】:2012-03-24 19:08:40
【问题描述】:

我有一个要求,在页面加载之前,我想检查查询字符串是否存在,如果查询字符串存在,那么我想重定向到另一个页面而不是当前页面我如何处理这种类型的要求JSF 2.

提前致谢

【问题讨论】:

  • 请多解释一下。 GET 或 POST 请求是否需要它?对于您项目中的每个请求?还是动作方法中的重定向?
  • 感谢您的快速响应。在加载主页之前,我想检查链接是否有查询字符串,如果查询字符串存在,那么我想验证该查询字符串,如果它无效查询字符串,如果验证成功,我将重定向到错误页面,然后我将显示主页。

标签: jsf-2


【解决方案1】:

在 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),您可以使用 &lt;f:event type="preRenderView"&gt;

<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");
    }
}

另见:

【讨论】:

  • 感谢 Balusc 的快速回复
  • 记住是&lt;f:metadata&gt;,而不是&lt;f:metatata&gt;
  • @Valter:错字已修正,谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2020-09-14
  • 2013-04-09
相关资源
最近更新 更多