0
В selectOneMenu, когда проверка не выполняется против f: validator, f: атрибут, значениеChangeListener не вызывается, я также пробовал немедленно = "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>
Если проверка не пройдена, то есть не просто ни в коем случае нового значения, так что логично, что выиграл» t вызывается. Каково ваше функциональное требование? То есть какую именно проблему вы пытаетесь решить с помощью прослушивателя изменения стоимости? Если вы никогда не используете event.getOldValue(), то это определенно неправильный инструмент для работы. Если вы разработаете желаемую работу, тогда мы сможем предложить правильный путь для достижения этой цели. – BalusC
yup вы правы @BalusC, но мое требование заключалось в том, что в зависимости от выбора я отображал некоторые макеты (которые имеют отношение «один к одному») с выбранным выпадающим списком, и если мы выберем selectOneMenu, предыдущие макеты не должны отображаться. Но поскольку проверка не удалась, я не смог сбросить макеты. В любом случае я получил обходное решение для этого, используя rendered = "! FacesContext.validationFailed" в панели макетов. – curiousManish