【问题标题】:JSF: throw 404 error if GET parameter is omittedJSF:如果省略 GET 参数,则抛出 404 错误
【发布时间】:2013-02-10 16:24:42
【问题描述】:

如果将无效的 GET 参数传递给页面,我需要抛出 404 错误。我已按照here 的描述将其附加到验证器。但是如果根本没有参数,验证器就不会被调用。我该如何处理这种情况?

【问题讨论】:

  • 在 validate 方法中(在你链接的帖子中),你仍然可以发现接收到的参数是null 并且仍然重定向。你试过了吗?
  • 是的,我试过了。正如我所说,只有在收到参数时才会调用 validate 方法。我认为,URL 应该看起来像 /page.jsf?param= 以将 null 传递给它。

标签: java jsf jsf-2


【解决方案1】:

您可以使用验证器进行与现在完全相同的检查,但在与preRenderView 事件关联的侦听器中:

<f:event listener="#{yourBean.validateParams}" type="preRenderView"/>

这个validateParams 监听器应该有这样的检查:

public void validateParams() {
    if (yourParam == null || /*Other fitting conditions here*/) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        facesContext.getExternalContext().responseSendError(404, "The param 'yourParam' is missing");
        facesContext.responseComplete();
    }
    //Other params here
}

这种方法适用于多个参数,您可以在其中验证每个参数并采取相应措施。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2011-08-02
    • 2015-09-28
    • 1970-01-01
    • 2013-03-28
    • 2013-10-06
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多