我在頁面中有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個數字),在點擊「下一步」後,用戶輸入的無效值仍然保留。只有錯誤消息的附件。