我有一个selectOneChoice
withautoSubmit=true
和immediate=true
跳过验证,如果selectOneChoice
设置为某个值,我想从 inputText 中删除所需的属性,所以inputText
将具有partialTrigger
的 id selectOneChoice
,但是当我从selectOneChoice
) 仍然只为需要更新的组件触发所需的验证(因为存在 partialTriggers),其他必需的组件不会触发其验证。
任何解决方法?
问问题
7316 次
3 回答
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));
}
于 2011-08-26T15:18:26.887 回答
0
您可以为您的 inputText 的必需属性发布 EL 表达式吗?
<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>
于 2011-08-02T20:58:45.750 回答
0
如果要跳过验证,请在 pagedef 上将跳过验证设置为 True。
于 2016-09-20T18:41:12.423 回答