2017-07-27 159 views
0

我需要驗證PF對話框中運行的primefaces(PF)嚮導中的只讀inputTextarea組件。從這裏讀取很多線程後,我決定使用inputHidden組件來處理它。然而,它確實是正確的,但在inputText中輸入一個值後,點擊commandButton我注意到foo bean的applyName方法從未被調用過。我想相信它與JSF生命週期有關。如何驗證inputTextarea只讀?

我的目標是foo.applyName方法啓動,以便foo.name返回一個適當的值並進行評估,以便我可以單擊向導中的下一步按鈕。

沒有驗證機制,foo.applyName的確將一個值(字符串類型)放入名稱屬性中,我可以繼續下一步。

<p:panelGrid id="table"> 
    <p:inputTextarea readonly="true" value="#{foo.name}" /> 
    <h:inputHidden id="name" required="#{empty foo.name}" requiredMessage="missing name" /> 
    <p:message for="name" /> 
</p:panelGrid> 

<h:inputText value="#{foo.someVar}" /> 
<p:commandButton value="Apply Missing Name" update="table" action="#{foo.applyName}" /> 

回答

1

問題源於這樣的事實:當您單擊commandButton時,您提交inputTextArea以及inputText。 JSF發現您提交的空白字段是必需的,並且不允許請求繼續。

有幾種方法可以解決這個問題

  1. 給這個inputText的ID和使用命令按鈕的「過程」屬性來指定要提交例如田野process =「@ this someVar」
  2. 將inputTextArea和inputText字段放在單獨的窗體中,以便applyName commandButton不會同時處理這兩個字段。
+0

啊......這對我有意義。儘管我重新設計了不同的方法,但我一定會嘗試一下您的建議。我相信它會起作用。讓我驗證一下,然後我會接受答案。感謝您的時間和建議! – DaeYoung