1

J'ai la page JSF suivante.La page JSF ne récupère pas la valeur de la variable du champ d'un bean géré

enter image description here

Le lien « Gérer Présence » est défini par le XHTML suivant:

<h:form> 
    <h:commandLink value="Manage Attendees" action="/Management/Event/manageAttendees?faces-redirect=true"> 
    <f:setPropertyActionListener target="#{managerManager.currentEvent}" value="#{event}" /> 
    </h:commandLink> 
    &nbsp; 
    (...) 
</h:form> 

currentEvent est un champ dans la ManagedBean « ManagerManager » qui est fixé sur la redirection et fait référence à l'événement dans le champ de description. Il a une liste que nous voulons parcourir. Cependant, la deuxième page:

enter image description here

ne rend pas les attributs. Comme la liste currentEvent était vide, ce que le rapport de débogage dit que ce n'est pas. Ce qui suit est le code pour la deuxième page qui devrait obtenir le titre:

<h2>Attendees in this Event</h2> 
    <h:dataTable 
     var="attendees" 
     summary="List of attendees in this event." 
     value="#{managerManager.currentEvent.attendees}" 
     rules="all" 
     cellpadding="5"> 

     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="Name" /> 
      </f:facet> 
      <h:outputText value="#{attendees.attendee.name}" /> 
     </h:column> 
    </h:dataTable> 

La ManagedBean est la session scope ainsi. Il semble que la deuxième page n'a pas accès à currentEvent ... pourquoi?

+0

La table de données est vide. Il devrait parcourir tous les participants et afficher leur nom. – Deegriz

+0

Quel est exactement le problème maintenant? "N'affiche pas la variable" est comme si un utilisateur final observait le problème. Essayez d'observer et de décrire le problème en tant que développeur, et non en tant qu'utilisateur final. Le 'f: setPropertyActionListener' fonctionne-t-il? La méthode setter est-elle invoquée? L'argument transmis est-il correct? Est-ce la même instance de bean accédée à la page suivante ou est-ce une nouvelle instance? Etc. Modifier la question et s'il vous plaît élaborer le problème dans la perspective du développeur. – BalusC

+0

Oui, tout cela est. Peut-être que je n'étais pas assez explicite, mon mauvais. Je pense que j'ai résolu le problème. Suppression de? Faces-redirect = true à partir de la ligne suivante: travaillé. Mais c'est supposé être là, n'est-ce pas? – Deegriz

Répondre

1

L'affiche comme une erreur d'instruction d'importation.
L'annotation @SessionScoped utilisé dans le bean géré était de
import javax.enterprise.context.SessionScoped;
plutôt que
import javax.faces.bean.SessionScoped;
comme il devrait évidemment. Ce qui explique pourquoi seule cette page spécifique a eu ce problème dans mon projet.