我有以下的JSF 2代碼:JSF 2:需要下拉時,不能選擇下拉列表元素默認項和默認項爲無效
<p:selectOneMenu id="dropdown" value="#{data.selection}" required="true" converter="selectOneMenuConverter">
<f:selectItem itemLabel="Select one..." itemValue="" noSelectionOption="true" />
<f:selectItems value="#{data.entries}" var="entry" itemLabel="#{entry.name}" itemValue="#{entry}" />
<p:ajax update="display" event="change" />
</p:selectOneMenu>
<h:panelGroup id="display">
<h:outputText value="#{data.selection}" />
</h:panelGroup>
一切正常,當我從下拉值如預期。 當用戶通過選擇「Select One」「取消」一個條目時,JSF抱怨這是不可能的,因爲selectonemenu是必需的。
問題來自那裏,p:ajax使部分提交觸發驗證。 Immediate = true也不起作用,因爲如果立即發生在輸入字段上(如selectonemenu),則執行驗證。 只有當用戶按下頁面底部的「go on」按鈕(未在代碼中顯示)時,驗證纔會發生
進一步給定的轉換器將字符串轉換爲對象,併爲默認值返回null(這也是「沒有選擇」的域內預期值)。
所以我的問題是我必須做什麼來完成我的情況。 對於我來說這是一個標準案例,我無法想象沒有解決方案。
任何想法?
最好的問候, 弗洛裏安
非常感謝。有用。 –
不客氣。 – BalusC
嗨,這是我的一次。我們遇到一個很奇怪的問題。具有param和clientId的東西在文本字段上工作,但不在p:selectOneMenu上。我們在每個地方都有文本框和下拉菜單中的required =「not empty param ...」el。在「去」按鈕我們有一個綁定,並在「保存」按鈕,我們沒有約束力。現在當我按下「保存」按鈕時,所有selectOneMenus都會變成紅色,提示驗證失敗。 –