後執行的方法我有這樣的JSF代碼錯誤嘗試錯誤捕獲
<h:form>
<h:inputText value="#{agreement.serviceId}"/>
<h:commandButton value="Enter" action="#{agreement.build}" />
<h:form rendered="#{!agreement.valid}">
<h:outputText value="Service id not valid. Please try again"/>
</h:form>
<h:form>
這是範圍的bean的構建方法。
public String build(){
try{
...//lots of backend logic
valid = true;
return "/agreementDetail.xhtml?faces-redirect=true";
}catch(Exception e){
valid = false;
return null;
}
}
基本上,這是我需要的行爲:
用戶輸入一個服務Id。如果此服務ID有效,則會將用戶重定向到agreementDetail.xhtml頁面。如果爲false,則用戶保留在main.xhtml頁面中,並呈現「Service id not valid ...」消息。
這是發生了什麼:
如果用戶輸入正確的服務ID,一切工作正常。如果用戶返回到main.xhtml並輸入了錯誤的服務ID,則錯誤顯示正確。但是現在,如果用戶輸入正確的服務ID,則不會執行build()方法。(我已經通過日誌記錄證實了這一點)。
基本上,一旦用戶輸入了錯誤的值,build()方法將不會再次執行,除非用戶簽名並再次登錄。很顯然,當build()發現錯誤並捕獲異常時會發生。
任何想法?
到目前爲止發佈的代碼似乎不符合問題描述。 action方法被聲明爲「private」。這應該永遠不會被執行,而是在首次調用時引發EL異常。順便說一下,你爲什麼不用#'來使用臉部信息?這種嵌套形式是一種醜陋的方法,只會導致[語法無效的HTML](http://validator.w3.org)。 –
BalusC
對不起,我犯了一個錯誤。該方法是公開的,我只是寫錯了。我將進行編輯以將其設置爲公開。另外,我知道更好,我只是發現這種行爲很有趣,我試圖瞭解發生了什麼。 –
Nacho321