2013-02-25 72 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 
} 

這種方法適用於多個參數,您可以在其中驗證每個參數並相應地採取行動。