p:bouton de commande n'est pas le feu de l'action
Voici le problème: actionlistener ne veut pas être viré
@ManagedBean(name="hotelsController")
@SessionScoped
public class HotelsController implements Serializable {
public void requestHotelAvail(ActionEvent event) {
request = new Request(df.format(arrivalDate), df.format(departureDate));
}
}
et xhtml
<h:panelgroup id="rooms"/>
<h:form id="hotelSearch">
<p:commandButton actionListener="#{hotelsController.requestHotelAvail}" value="submit" update="rooms" />
</h:form>
J'ai essayé tout ce que je pouvais recherche de changé @managedbean
à @component
ensemble import
à import javax.faces.event.ActionEvent;
Mais il ne fait toujours pas le feu quoi que ce soit.
Formulaire est dans un p:accordion
et lorsqu'il est utilisé avec h:commandbutton
il fonctionne très bien
MODIFIER: désolé pour les induire en erreur. les chambres mises à jour après le clic mais actionListener n'est pas déclenché. si les chambres ne sera pas obtenir de nouvelles données. Le code Important dans requestHotelAvail
doit être tiré avant la mise à jour de chambres et de ses pas.
EDIT2: PrimeFaces 2.2.1
- j'ai lu tout le manuel primefaces, mais theres aucune explication à ce que j'ai fait tout ce qu'il énonce
J'ai essayé d'utiliser action
au lieu de actionListener
sans ActionEvent
mais il n'a jamais rien faire. à l'aide de <h:commandbutton action="#{hotelscontroller.requestHotelAvail}"/>
fonctionne très bien mais je veux que le moteur ajax pour actualiser seulement que rooms
panelgroup
Mise à JOUR: Maintenant ça fonctionne. Forme qui ne pouvait pas être <p:accordion>
mais pourquoi et comment l'activer? Formulaire de maintenant, je vais travailler sans elle.
rooms
panelgroup n'est pas mis à jour?Ne résout pas votre problème, mais c'est une bonne pratique d'avoir le composant formulaire ci-dessus tous les autres composants, tant qu'il n'interfère pas avec d'autres formes (évitez aussi l'intérieur des formes)
Aussi, mettre de la
sysout's
dans cette méthode pour être sûr ou en créer une autre méthode de la classe... dans les logs du serveur n'apparaît pas quelque chose? Comme ne pouvait pas trouver la fève, ou de l'action ou de la propriété n'est pas trouvée? Si vous utilisez Netbeans assurez-vous que votre classe est correctement construit...Ce PrimeFaces version? Essayez
action
au lieu de actionListener
et retirer le ActionEvent
argument que vous n'utilisez pas de toute façon.
OriginalL'auteur Mazmart | 2011-11-25
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que le comportement différent de h:commandLink vient de ajax/non-ajax traitement.
Par défaut - si vous n'utilisez pas de f:ajax - h:commandLink est non-ajax et de l'ensemble de la page est réaffichées. Primefaces p:commandLink est l'utilisation d'ajax et de vous indiquer dans les chambres du composant mis à jour. Dans votre cas, des chambres est à l'extérieur de la forme de sorte qu'il devrait plutôt être traités :les chambres (l'esprit du côlon) au lieu de simplement les chambres.
mise à jour: avez-vous essayé d'ajax avec h:commandLink? Il serait:
Aussi je ne suis pas familier avec primefaces, mais peut-être que vous pouvez essayer d'indiquer expressément que le composant à traiter avec d'autres
process="@this"
- bien que je suppose que ce défaut comme dans la bibliothèque de base.update
mais laactionListener
. mise à jour Fonctionne très bienJe vois, mise à jour de ma réponse à explorer une autre possibilité.
bien
<h:commandButton action="#{hotelscontroller.requestHotelAvail}" value="submit"> <f:ajax render=":rooms"/> </h:commandButton>
il se comporte désormais comme<p:commandButton>
donc panelgroup est mis à jour, mais l'action n'est pas déclenché. il y a plus de problème de managedBean tout ou xhtmlPouvez-vous essayer de mettre des est en dehors de p:accordéon? Cela ressemble à une itération composant et ceux-ci tendent à être problématique.
Merci à vous qui fonctionne comme un charme, mais maintenant j'ai trouver pourquoi et comment l'utiliser dans
<p:accordion.
.OriginalL'auteur mrembisz
Vous essayez d'inspecter la réponse:
Ouvrir Chrome ou Firefox -> Inspecter l'Élément -> Réseau et de suivi de l'appel ajax.
OriginalL'auteur Pablo