web-dev-qa-db-fra.com

La commande PrimeFaces ne permet pas de naviguer ou de mettre à jour

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" />
39
Sven

<p:commandButton> a besoin de l’un des éléments suivants pour fonctionner correctement: 

  • l'attribut update pour répertorier les identifiants des composants à restituer (pour les demandes AJAX)
  • l'attribut 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.

51
Michael Borgwardt

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 ...

31
alfonx

Vous devez utiliser la redirection si vous faites de la navigation et que la requête est faite avec ajax.

8
Cagatay Civici

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" />
4
zzirna
<h:commandButton 
                             styleClass="btn btn-primary-active upgrade" data-dismiss="modal" 
                             value="Upgrade Account" 
                             action="profile.do?faces-redirect=true&amp;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.

0
shehraz490

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"/>
0
Toumi