2013-02-25 69 views
2

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

+0

在验证方法中(在您链接的帖子中),您仍然可以了解收到的参数是否为null并仍然是重定向的。你试过这个吗? – 2013-02-25 13:59:41

+0

是的,我试过了。正如我所说的,只有收到参数时才会调用验证方法。我认为,URL应该看起来像'/page.jsf?param ='将'null'传递给它。 – 2013-02-25 14:17:29

回答

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 
} 

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