Question

Je suis en difficulté pour obtenir mon haricot à mettre à jour avec les nouvelles valeurs de la page. J'ai deux boutons Soumettre sur ma page et je bascule dont l'on écrit sur la base d'une valeur booléenne pour quel mode ma page se trouve. Lorsque ma page est mise à jour uniquement (aucune validation), je montre le bouton Soumettre immédiat="vrai" . Lorsque la page est en mode de traitement (validez), je montre le bouton d'envoi qui n'a pas immédiat="vrai". Le problème que je rencontre est lorsque je suis en mode de mise à jour (aucune validation), les valeurs des champs de saisie ne sont pas définies dans le haricot. Tout ce que je veux faire lorsque dans ce mode, enregistrez la page comme ça et quittez. Aucune validation n'est nécessaire car les informations de cette page ne sont pas prêtes à traiter ou "vraiment utiliser" si vous voulez. Cela dit, si j'ai ma page en mode processus (validez), tout fonctionne comme prévu. Les valeurs sont soumises et enregistrées.

Je ne pose pas encore de code, car il n'y a rien de spécial sur ce que j'essaie de faire. J'ai simplement une valeur contraignante qui pointe sur simple getter / setter. Mon haricot est dans @viewscope.

J'ai essayé d'utiliser les exemples de Balusc dans son excellent poteau Blogspot: Debug-JSF-Lifecycle . Mettre immédiatement="true" sur les champs d'entrée n'a aucun effet lorsque vous cliquez sur le bouton Soumettre avec immédiat="vrai". Tous et tout cependant, la façon dont je comprends qu'il est immédiat="vrai" sur l'UICOMMAND est ce qui indique à l'application de sauter la validation ou non. La mettre sur les champs d'entrée permet simplement de valider la validation plus tôt. Est-ce que je manque quelque chose?

Des idées? Toute aide et toute aide est la plus appréciée!

Téléphones d'application:
JSF 2.0.3
Tomcat 6.0.14

Était-ce utile?

La solution

The immediate="true" is not intented to disable validation. It's intented to either prioritize validation or to skip processing of the input altogether. See also the summary at the bottom of the article.

You need to disable validation by setting required="false", or <f:validator disabled="true">. Here's an example which assumes that you've a boolean process property which represents the form's state:

<h:inputText value="#{bean.value1}" required="#{bean.process}" />
<h:inputText value="#{bean.value2}" required="#{bean.process}">
    <f:validator validatorId="someValidatorId" disabled="#{!bean.process}" />
</h:inputText>
...

This way the fields aren't required and won't be validated when process evaluates false.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top