Le adfface ignora immediatamente se l'ingresso richiesto ha partialtrigger il componente di sottomissione

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

Domanda

Ho un selectOneChoice insieme a autoSubmit=true e immediate=true per saltare la convalida, se il selectOneChoice è impostato su un valore che voglio Rimuovere l'attributo richiesto da un testo input, così la inputText avrà partialTrigger l'ID del selectOneChoice, ma quando cambio il valore dal selectOneChoice (e la modifica viene inviata) La convalida richiesta è ancora attivata solo per il componente che deve essere aggiornato (a causa della presenza dei parziali) gli altri componenti richiesti non ne innescano la convalida.
Qualche alternativa?

È stato utile?

Soluzione

È necessario modificare l'indicatore richiesto in un Valuechangelistener. Ciò accadrà prima che il modello venga aggiornato.

Ad esempio, dato questo frammento 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>

E questo ascoltatore, ottieni il comportamento che descrivi.

public void selectionChange(ValueChangeEvent valueChangeEvent) {
    String newValue = valueChangeEvent.getNewValue().toString();
    RichInputText it = (RichInputText)valueChangeEvent.getComponent().findComponent("it1");
    it.setRequired(!"two".equals(newValue));
}

Altri suggerimenti

Puoi pubblicare l'espressione El per l'attributo richiesto del tuo 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>

Se si desidera saltare la convalida, fai saltare la convalida su True su Pagomef.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top