2012-09-05 73 views
3

我在頁面中有h:selectOneMenu組件。用戶必須在那裏選擇「是」或「否」,初始值爲空(標記爲「未知」)。在bean中它是布爾型的,所以null是可能的。如果用戶選擇有效值,例如「是」,點擊下一步,true被保存在bean中。用戶輸入的值在JSF驗證後消失

現在用戶可以回到此頁面,並選擇「未知」,這是不是一個有效的值。當用戶現在點擊下一步時,顯示錯誤消息。沒關係,但是價值被更改爲「是」。它從bean中更新。這樣它改變了用戶輸入的內容,這不是必需的行爲。是否有可能保持用戶的價值?

<h:form id="co"> 
    <h:selectOneMenu id="isCeded" 
        value="#{bean.boolValue}" 
        required="true" 
        requiredMessage="#{msgs.please_select_value}"> 
    <f:selectItem itemLabel="#{msgs.unknown}"/> 
    <f:selectItem itemValue="true" itemLabel="#{msgs.yes}"/> 
    <f:selectItem itemValue="false" itemLabel="#{msgs.no}"/> 
    <f:ajax execute="@this" render="isCededMsg"/> 
    </h:selectOneMenu>* 
    <h:message id="isCededMsg" for="isCeded" errorClass="invalid"/> 

    <h:commandButton id="submit" value="Next" action="#{bean.submit}" /> 
</h:form> 

奇怪的是,這種行爲只發生在用戶輸入空值到空值不是有效值的字段。如果例如用戶在某些驗證文本字段中輸入另一個無效值(例如,只允許10個數字的20個數字),在點擊「下一步」後,用戶輸入的無效值仍然保留。只有錯誤消息的附件。

回答