Quelqu'un peut-il me dire comment régler automatiquement <h:selectOneMenu>
(ou tout autre composant) avec des valeurs dépendant d'un autre <h:selectOneMenu>
s'il y a des éléments vides avec 'required' réglé sur 'vrai' sur le formulaire? Si vous définissez <a4j:support event="onchange" reRender="anotherElement" immediate="true" />
alors rien n'est changé car la valeur modifiée n'est pas définie. Mais sans immediate="true"
j'ai toujours le message que tel ou tel élément ne peut pas être vide. Voici un exemple de code qui ne fonctionne pas.Comment définir une liste déroulante avec des valeurs dépendant d'une autre liste déroulante si les deux sont réglés sur requis
<h:outputLabel value="* #{msg.someField}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:selectOneMenu id="someSelect"
value="#{MyBean.someObj.someId}"
required="true" label="#{msg.someField}"
>
<a4j:support event="onchange" reRender="anotherSelect" limitToList="true" immediate="true"/>
<f:selectItem itemValue=""/>
<f:selectItems value="#{MyBean.someList}"/>
</h:selectOneMenu>
<rich:message for="someSelect" styleClass="redOne"/>
</h:panelGrid>
<h:outputLabel value="* #{msg.anotherField}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:selectOneMenu id="anotherSelect"
value="#{MyBean.someObj.anotherId}"
required="true" label="#{msg.anotherField}"
>
<f:selectItem itemValue=""/>
<f:selectItems value="#{MyBean.anotherList}"/>
</h:selectOneMenu>
<rich:message for="anotherSelect" styleClass="redOne"/>
</h:panelGrid>
<h:outputLabel value="* #{msg.name}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:inputText id="myName" value="#{MyBean.someObj.myName}"
required="true" label="#{msg.name}"/>
<rich:message for="myName" styleClass="redOne"/>
</h:panelGrid>
Donc, ici (je le répète), si j'essaie de changer « someSelect » puis « anotherSelect » devrait mettre à jour ses valeurs, mais elle ne présente pas parce que quand celui-ci tente d'obtenir la valeur de « someSelect » il obtient null (si immediate
est défini sur true
) ou la validation de formulaire échoue sur les éléments vides. Comment puis-je ignorer la validation mais obtenir cette valeur modifiée de 'someSelect'?
Ouais, merci! C'est si simple :) – mykola