ADFFACESは、必要な入力に送信コンポーネントがpartialTriggerがある場合、すぐに無視します

StackOverflow https://stackoverflow.com/questions/6385802

質問

私は持っています selectOneChoiceautoSubmit=trueimmediate=true 検証をスキップするには、 selectOneChoice 私がしたい価値に設定されています inputTextから必要な属性を削除します, 、だから inputText 持っています partialTrigger のID selectOneChoice, 、しかし、私がから値を変更するとき selectOneChoice (そして変更が提出されます)必要な検証は、(部分的なトリガーの存在のために)更新する必要があるコンポーネントのためだけにトリガーされます。
回避策はありますか?

役に立ちましたか?

解決

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));
}

他のヒント

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>

検証をスキップする場合は、PagedefでSKIP検証をtrueにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top