ADFfaces如果所需输入具有partialTrigger提交组件,则忽略立即

时间:2011-06-17 12:35:55

标签: jsf oracle-adf rerender immediate-attribute

我有selectOneChoice autoSubmit=trueimmediate=true要跳过验证,如果selectOneChoice设置为某个值,我想从中删除所需的属性inputText ,因此inputTextpartialTrigger selectOneChoice的ID,但是当我更改selectOneChoice的值时(更改已提交) )仍然只针对需要更新的组件触发所需的验证(由于存在partialTriggers),其他所需组件不会触发其验证。
任何解决方法?

3 个答案:

答案 0 :(得分:2)

您需要在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));
}

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您想跳过验证,请在pagedef上将Skip Validation设置为True。