Comment appeler un bouton de commande sans la validation de tous les intrants requis?
Je suis en train de faire une redirection à partir de l'index.xhtml pour registerFirstTime.xhtml.
Le code dans la page d'index.xhtml est:
<h:form id="content" style="margin-top: 1em;">
<p:panel id="panel" header="LOGIN">
<p:messages id="msgs" globalOnly="true"/>
<h:panelGrid columns="3">
<h:outputLabel value="e-mail" />
<p:inputText id="name" required="true" value="#{UserBean.email}"
requiredMessage="Required: e-mail" display="icon">
</p:inputText>
<p:message id="msgName" for="name"/>
<h:outputLabel value="Password" />
<p:password id="password" required="true" value="#{UserBean.password}"
requiredMessage="Required: Password" display="icon" feedback="false">
</p:password>
<p:message id="msgPassword" for="password"/>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Login" actionListener="#{UserBean.validate}" update="msgNombre, msgPassword, msgs"/>
<h:commandButton value="Register for the first time" action="register"/>
</h:panelGrid>
</p:panel>
</h:form>
Tout, le contenu de la redirection, dans faces-config.xml est:
<navigation-rule>
<from-view-id>index.xhtml</from-view-id>
<navigation-case>
<from-outcome>register</from-outcome>
<to-view-id>registerFirstTime.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Jusqu'à ce que le nom de l'entrée et mot de passe sont bien remplies, vous ne pouvez pas faire la redirection.
Comment je peux me faire de la redirection de l'enregistrement, sans prendre en compte les champs requis? Merci! =)
Vouliez-vous dire rediriger sur soumettre sans remplissage valeurs??
Oui, j'ai besoin de faire une redirection de remplissage de valeurs (login), mais j'ai aussi besoin d'autres redirect (registre) sans remplissage de valeurs.
J'ai prouvé à mettre le h:commandButton dans un autre h:la forme, et il fonctionne, mais est-il éventuellement de mettre le h:commandButton dans le h:form id de contenu?
Oui, j'ai besoin de faire une redirection de remplissage de valeurs (login), mais j'ai aussi besoin d'autres redirect (registre) sans remplissage de valeurs.
J'ai prouvé à mettre le h:commandButton dans un autre h:la forme, et il fonctionne, mais est-il éventuellement de mettre le h:commandButton dans le h:form id de contenu?
OriginalL'auteur Víctor Pariente | 2012-06-28
Vous devez vous connecter pour publier un commentaire.
Ajouter
immediate="true"
pour le bouton de commande qui doit sauter le traitement de tous les champ de saisie qui n'ont pas leimmediate="true"
attribut.Sans rapport avec à la de béton problème, veuillez noter que vous êtes techniquement pas envoyer une redirection ici. En fait cela envoie un transfert, c'est à dire l'URL dans la barre d'adresse du navigateur reste de l'URL de la page de connexion. Vous devez ajouter
<redirect/>
à la<navigation-case>
. Veuillez également noter que la navigation des cas sont un vestige de JSF 1.x. Depuis JSF 2.x vous pouvez effectuer "implicite de navigation", par laquelle vous venez de spécifier l'affichage de l'ID comme résultat.De cette façon, vous pouvez vous débarrasser de la navigation de cas tout à fait.
OriginalL'auteur BalusC
@BalusC solution devrait faire l'affaire, comme toujours. Mais je voudrais souligner un couple de choses puisque vous semblez être à l'aide de Primefaces. Les deux sont sans rapport avec la question, mais il pourrait vous aider à un certain point.
Tout d'abord, vous pouvez utiliser implicite de navigation (présenté dans JSF2). De cette façon, vous n'avez pas besoin de définir toutes les règles de navigation dans votre faces-config.xml fichier (je travail sur un vieux JSF 1.2 projet et la haine de la nécessité de définir la navigation rôles pour tout). Voici comment vous pouvez le faire:
<h:commandButton value="Register for the first time" action="registerFirstTime.xhtml?faces-redirect=true"/>
Les visages de redirection en paramètre forces une redirection au lieu d'un en avant, dans le cas où vous avez besoin que.
Aussi, dites que vous voulez traiter correctement certaines valeurs, mais pas tous d'entre eux. Dans ce cas, vous pouvez utiliser le processus attribut de p:commandButton ou p:ajax. Par exemple
<h:commandButton value="Register for the first time" action="registerFirstTime.xhtml?faces-redirect=true" process="@this, name"/>
Ce serait JSF traiter uniquement le bouton (@) et le composant avec id="nom" (votre adresse e-mail de champ). Encore une fois, il n'a probablement pas s'appliquer à ce question, mais c'est quelque chose que j'utilise souvent.
OriginalL'auteur Andre