0
在selectOneMenu中,當對f:validator,f:屬性進行驗證失敗時,valueChangeListener沒有被調用,我也試過immediate =「true」,但它沒有解決。 任何幫助將不勝感激。謝謝。 下面的代碼片段:當輸入驗證失敗時,不會調用valueChangeListener
<p:selectOneMenu id="firstinputselectone" rendered="#{!dynamicUIPreEnrollmentAction.singleProfile}"
valueChangeListener="#{dynamicUIPreEnrollmentAction.showLayoutPreview}"
styleClass="#{extraFieldDTO.isReadOnly eq '1' ?'disabledInputFieldSelectItem' :'enabledInputFieldSelectItem'}"
disabled="#{extraFieldDTO.isReadOnly eq '1'}"
value="#{extraFieldDTO.stringFieldValue}">
<f:selectItem itemLabel="#{msg.DROP_SELECTONE}"
id="selectItem_24" />
<f:selectItems
value="#{dropDownParserAction.getGenericLinkedKeyValueListMap(null,extraFieldDTO.dropDownSearchValue,extraFieldDTO.dropDownType,extraFieldDTO.firstLinkedDropDownType)}"
id="selectItems_24655" />
<p:ajax event="change" id="ajax_2" update="@form" />
<f:validator validatorId="dynamicUIValidator" />
<f:attribute name="DYNAMICUIDATAOBJECT" value="#{extraFieldDTO}" />
</p:selectOneMenu>
</h:panelGroup>
</p:fieldset>
<p:spacer width="50" />
<p:fieldset legend="#{msg.LBL_BACKCARD}" toggleable="false"
style="width:400px;height:400px;background-color:#e6e6e6">
<h:panelGroup>
<br clear="none" />
<br clear="none" />
<br clear="none" />
<br clear="none" />
<p:spacer height="40" />
<h:graphicImage id="layout_present_idar590" rendered="#{dynamicUIPreEnrollmentAction.backProfileLayout ne null}"
value="data:image/jpg;base64,#{dynamicUIPreEnrollmentAction.backProfileLayout}" />
</h:panelGroup>
</p:fieldset>
</h:panelGrid>
</div>
</p:outputPanel>
如果驗證失敗,那麼就只是一個新的價值沒辦法,所以這是合乎邏輯的事情不會不會被調用。你的功能需求是什麼?即你試圖用價值變化監聽者來解決什麼問題?如果你從不使用event.getOldValue(),那絕對是這個工作的錯誤工具。如果您詳細說明所需的工作,那麼我們可以提出實現這一目標的正確方法。 – BalusC
是你是正確的@BalusC,但我的要求是,根據選擇我正在渲染一些佈局(與一對一關係)與選定的下拉列表,如果我們選擇selectOneMenu不應該呈現以前的佈局。但由於驗證失敗,我無法重置佈局。無論如何,我通過在佈局面板中使用rendered =「!facesContext.validationFailed」來解決該問題。 – curiousManish