Balise <h:commandLink> ne fonctionne pas
Bonjour à tous,
J'essaie actuellement via une balise <h:commandLink> de lancer une méthode contenue dans un de mes ManagedBean.
Cette méthode est censée renvoyer le String de la page que l'utilisateur doit accéder.
Malheureusement, lorsque je clique sur le lien, la page qui est lancée est celle sur laquelle l'utilisateur se trouve actuellement suivie d'un "#".
Je vous laisse ci dessous les morceaux de code en rapport :
ManagedBean :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
@ManagedBean(name="listIncident")
@SessionScoped
public class ListIncidentBean {
private List<IncidentBDT> listInc = null ;
public String getIncidentByDefaultDomain(){
return "listIncidentVue?faces-redirect=true" ;
} |
Page sur laquelle le lien est trouvable :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<div id="bloc_menu_v">
<h:form>
<ul class="sf-menu">
<li><a href="#">Incident</a>
<ul>
<li><h:commandLink value="Par domaine" action="${listIncident.getIncidentByDefaultDomain}" /></li>
<li><h:commandLink value="Par sous-domaine" action="${listIncident.getIncidentByDefaultSSDomain}" /></li>
<li><h:commandLink value="Par période" action="${listIncident.getIncidentByDefaultDate}" /></li>
</ul>
</li> |
Solution trouvée pour résoudre le problème -- Besoin de détails
Bonjour,
je rencontre un problème semblable à celui de l'intervenant 'choux92':
Description du problème:
Dans une page xhtml, j'ai un bouton, qui effectue un appel à une méthode de bean. Or, cet appel ne s'exécute jamais.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10
|
<h:panelGrid id="compteDeconnecterPanelGrid" columns="2" cellpadding="5" border="1" style="font-size:small;color:brown;background-color:blanchedalmond">
<h:outputLabel for="compteDeconnecterIdentifiant" value="Identifiant :" />
<h:outputText value="#{employeManagedBean.employe.identifiant}" id="compteDeconnecterIdentifiant"/>
<f:facet name="footer">
<f:ajax render="comptePanelGridForm">
<p:commandButton id="compteDeconnecterButton" value="Se déconnecter" update=":comptePanelGridForm" actionListener="#{employeManagedBean.doEmployeDeconnecter}"/>
</f:ajax>
</f:facet>
</h:panelGrid> |
Or, l'appel à cette méthode ne s'exécute pas.
Je voudrais bien avoir les détails de ta solution, choux92. Tu parles de configuration du projet lors de sa création. -->Cela m'intéresse.
A tous ceux qui peuvent m'aider, merci d'avance et bon courage !
chat_roux
Dans une page XHTML -- Appel à la méthode d'un bean -- Solution
Bonjour,
concernant ce problème, j'ai trouvé une solution !
Description du problème:
Ma page 'comptePanelGrid.xhtml', effectue 4 inclusions de pages (ci-dessous) :
Code:
1 2 3 4 5 6 7 8
| <h:form id="comptePanelGridForm">
<h:panelGrid columns="1" cellpadding="5" border="1">
<h:panelGroup id="eastNorthPanel" rendered="#{employeManagedBean.compartmentEastNorth=='./employe/compteAccederForm.xhtml'}"><ui:include src="./employe/compteAccederForm.xhtml"/></h:panelGroup>
<h:panelGroup id="eastCenter1Panel" rendered="#{employeManagedBean.compartmentEastCenter1=='./employe/compteIdentifierForm.xhtml'}"><ui:include src="./employe/compteIdentifierForm.xhtml"/></h:panelGroup>
<h:panelGroup id="eastCenter2Panel" rendered="#{employeManagedBean.compartmentEastCenter2=='./employe/compteInscrireForm.xhtml'}"><ui:include src="./employe/compteInscrireForm.xhtml"/></h:panelGroup>
<h:panelGroup id="eastSouthPanel" rendered="#{employeManagedBean.compartmentEastSouth=='./employe/compteDeconnecterForm.xhtml'}"><ui:include src="./employe/compteDeconnecterForm.xhtml"/></h:panelGroup>
</h:panelGrid>
</h:form> |
Et mon fichier 'compteDeconnecterForm.xhtml' affiche un bouton, qui appelle une méthode d'un bean (ci-dessous) :
Code:
1 2 3 4 5 6 7 8 9
| <h:panelGrid id="compteDeconnecterPanelGrid" columns="2" cellpadding="5" border="1" style="font-size:small;color:brown;background-color:blanchedalmond">
<h:outputLabel for="compteDeconnecterIdentifiant" value="Identifiant :" />
<h:outputText value="#{employeManagedBean.employe.identifiant}" id="compteDeconnecterIdentifiant"/>
<f:facet name="footer">
<f:ajax render="comptePanelGridForm">
<p:commandButton id="compteDeconnecterButton" value="Se déconnecter" update=":comptePanelGridForm" action="#{employeManagedBean.doEmployeDeconnecter}"/>
</f:ajax>
</f:facet>
</h:panelGrid> |
Lors de l'exécution : l'appel à cette méthode de bean ne s'exécutait pas !
La solution au problème:
-->J'ai rajouté 'JSF 2.1' dans les bibliothèques de mon projet.
-->Jusque-là, 'JSF 2.1' était présent dans les frameworks du projet uniquement.
Voilà. bon courage à tous ceux qui ont rencontré ce problème...
chat_roux
Bien enregistré ton explication, merci.
OK, bien enregistré ton explication, merci.
En particulier, cette différence entre ''action'' et ''actionListener'' : je l'ignorais. (J'avais lu la javadoc de chacun de ces 2 éléments, sans la comprendre.)
Et le fait que l'élément "p:commandButton" est en "ajax" par défaut : je l'ignorais également. (je débute sur primefaces...)
Merci et bon courage !