У меня есть selectOneChoice
с autoSubmit=true
и immediate=true
, чтобы пропустить проверку, если selectOneChoice
установлено какое-то значение, я хочу удалить обязательный атрибут из inputText, поэтому inputText
будет иметь partialTrigger
идентификатор selectOneChoice
, но когда я меняю значение из selectOneChoice
(и изменение отправляется), требуемая проверка по-прежнему запускается только для компонента, который необходимо обновить (из-за наличия partialTriggers), другие необходимые компоненты не запускают его проверку .
Есть обходные пути?
ADFfaces игнорирует Immediate, если требуемый ввод имеет partialTrigger отправляющий компонент
Ответы (3)
Вам нужно изменить нужный индикатор в valueChangeListener. Это произойдет до обновления модели.
Например, данный фрагмент JSF.
<af:panelFormLayout id="pfl1">
<af:inputText label="Label 1" id="it1" value="#{pageFlowScope.RemoveRequiredBean.myValue}" required="true" partialTriggers="soc1"/>
<af:selectOneChoice label="Selection" value="#{pageFlowScope.RemoveRequiredBean.selection}" id="soc1" autoSubmit="true" immediate="true"
valueChangeListener="#{pageFlowScope.RemoveRequiredBean.selectionChange}">
<af:selectItem label="one" value="one" id="si3"/>
<af:selectItem label="two" value="two" id="si1"/>
<af:selectItem label="three" value="three" id="si2"/>
</af:selectOneChoice>
<af:commandButton text="commandButton 1" id="cb1"/>
<f:facet name="footer"/>
</af:panelFormLayout>
И этот слушатель, вы получаете поведение, которое вы описываете.
public void selectionChange(ValueChangeEvent valueChangeEvent) {
String newValue = valueChangeEvent.getNewValue().toString();
RichInputText it = (RichInputText)valueChangeEvent.getComponent().findComponent("it1");
it.setRequired(!"two".equals(newValue));
}
person
Billy Bob Bain
schedule
26.08.2011
не проверял, но звучит логично. 10x
- person Cosmin Cosmin; 31.08.2011
Требуется ли использовать прослушиватель или что произойдет, если мы попробуем required=#{pageFlowScope.RemoveRequiredBean.selection eq 'two'} во входном тексте?
- person Nagaraja JB; 14.06.2021
Можете ли вы опубликовать выражение EL для обязательного атрибута вашего inputText?
<af:inputText label="ResId" id="it1" required="#{someValueExpression}"
partialTriggers="soc1">
</af:inputText>
<af:selectOneChoice label="Label 1" id="soc1" autoSubmit="true">
<af:selectItem label="test" value="test" id="si1"/>
<af:selectItem label="test2" value="test2" id="si12"/>
</af:selectOneChoice>
person
Hyangelo
schedule
02.08.2011
Если вы хотите пропустить проверку, установите для параметра «Пропустить проверку» значение «Истина» на pagedef.
person
Abhijit
schedule
20.09.2016
required
? Например.required="#{not empty param['foo:bar']}"
. - person BalusC   schedule 18.07.2011