2
如果将无效GET参数传递给页面,那么我需要抛出404错误。我按照here的描述将它附加到验证器中。但是如果根本没有参数,验证器不会被调用。我该如何处理这种情况?JSF:如果GET参数被省略,则抛出404错误
如果将无效GET参数传递给页面,那么我需要抛出404错误。我按照here的描述将它附加到验证器中。但是如果根本没有参数,验证器不会被调用。我该如何处理这种情况?JSF:如果GET参数被省略,则抛出404错误
你可以把一模一样的检查你正在使用的验证现在做的,但关联到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
}
这种方法适用于多个参数,您可以在其中验证每个参数并相应地采取行动。
在验证方法中(在您链接的帖子中),您仍然可以了解收到的参数是否为null并仍然是重定向的。你试过这个吗? – 2013-02-25 13:59:41
是的,我试过了。正如我所说的,只有收到参数时才会调用验证方法。我认为,URL应该看起来像'/page.jsf?param ='将'null'传递给它。 – 2013-02-25 14:17:29