2009-05-25 37 views
2

我在用JSF/A4J在A4J形式

使用條件評估表達有點問題,條件必需的JSF驗證這裏是我的代碼

<a4j:form> 
     <h:inputText id="id1" value="#{mybean.myvalue}" size="1" 
        required="#{not mybean.condition}" 
        rendered="#{not mybean.condition}" 
        requiredMessage="Put a number in here" /> 

      <h:selectBooleanCheckbox value="#{mybean.condition}"> 
       <a4j:support event="onclick" reRender="id1"/> 
      </h:selectBooleanCheckbox> 

<a4j:commandButton action="#{mybean.myaction}" value="Do something" /> 

</a4j:form> 

布爾複選框有條件啓用/禁用驗證。

這不起作用:a4j:commandButton簡單地跳過驗證。

謝謝。

回答

6

如果的inputText驗證失敗(處理驗證階段),則該值mybean.condition將不被更新(處理更新相)。由於文本字段使用所需的屬性,因此很可能。從RichFaces的文檔

壽命週期:

alt text http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html_single/images/newpic1.png

如果任何JSF相位出現故障時,生命週期跳到呈現響應,以避免無效的輸入操作。您可以使用h:messageh:messages標籤來查看報告的錯誤(但因爲你正在使用AJAX,你必須把他們的東西,將得到重新渲染。

我猜測,如果你設置了ajax單屬性aj4:support標籤,你會得到你想要的行爲。文檔說這隻會提交控制的值,所以文本字段將不會涉及應用請求值/流程驗證/流程更新階段

+0

謝謝,但我應該在哪裏放置ajaxSingle屬性? – 2009-05-25 13:23:33

0

mybean的作用域是什麼?如果是請求作用域,那麼當你點擊按鈕並且輸入域可能被處理時,它的值將被重置(如果被渲染的可執行文件'虛假')。