J'utilise Primefaces pour rendre mon application un peu plus belle. J'ai remarqué que p:commandButton
et h:commandButton
ne fonctionnent pas de la même manière.
Le p:commandButton
appelle la méthode et rien d’autre ne se produit. Le h:commandButton
appelle la méthode et retourne une navigation.
J'ai eu des problèmes avec la redirection après avoir appuyé sur le bouton de connexion avec p:commandButton
. Comment gérer ça?
J'ai un paramètre de mise à jour:
<p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" />
<p:commandButton>
a besoin de l’un des éléments suivants pour fonctionner correctement:
update
pour répertorier les identifiants des composants à restituer (pour les demandes AJAX)ajax="false"
pour effectuer une soumission normale, sans ajax.Si vous ne possédez ni l'un ni l'autre, le bouton crée par défaut une demande AJAX sans aucun retour d'interface utilisateur.
De plus, j'ai eu des problèmes avec aucune des deux options lorsque le <h:form>
environnant avait un attribut enctype
.
Je pense que cagatay était:
Est-ce que not ne navigue pas dans la page:
<p:commandButton action="home.xhtml" value="Go Home"/>
Fonctionne (redirige la page):
<p:commandButton action="home.xhtml?faces-redirect=true" value="Go Home"/>
Works (redirige la page)
<p:commandButton action="home?faces-redirect=true" value="Go Home"/>
si .xhtml est votre postfix par défaut défini dans web.xml:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
Plus d'informations peuvent être trouvées dans le forum primefaces, par exemple dans cette discussion sur la navigation
J'espère que ça a aidé un peu ...
Vous devez utiliser la redirection si vous faites de la navigation et que la requête est faite avec ajax.
J'ai un problème similaire.
J'utilise primefaces et primefaces mobile et la navigation échoue dans Firefox lorsque vous utilisez <p:commandButton>
avec ajax = "false" et action = "find.xhtml? Faces-redirect = true".
La seule façon de le faire fonctionner également dans Firefox était d'utiliser <h:commandButton>
:
<h:commandButton value="#{msg.find}" process="find"
action="find.xhtml?faces-redirect=true" />
<h:commandButton
styleClass="btn btn-primary-active upgrade" data-dismiss="modal"
value="Upgrade Account"
action="profile.do?faces-redirect=true&tab=plan"
oncomplete="$('#freeGiftModal').hide();" process="@this" partialSubmit="true" immediate="true"/>
J'ai utilisé le bouton de commande pour accéder à la page de profil, et cela fonctionne bien pour moi.
aucune des solutions ci-dessus n'a fonctionné pour moi . Vous pouvez toujours utiliser le javascript
<p:commandButton onclick="window.location.href =home.xhtml"
style="height: 20px" type="button" title="title" icon="ui-icon-transferthick-e-w"/>