2010-06-23 8 views
0

pour différents SelectOneMenu (s) J'ai un dataTable qui a une valeur d'une classe de haricots qui ressemble à ceci:stockage des variables de session séparées dans un dataTable JSF

public class myBean { 
    private List<SelectItem> depList; 

Avec accesseurs.

Mon getter appelle une méthode buildDepList() qui obtient les noms de département de la base de données et remplit la liste depList.

Voilà comment mon fichier JSP ressemble à:

<ice:dataTable id="specializationTable" style="height: 216px; left: 134px; top: 62px; position: absolute" 
    value="#{AdmissionApplication$Application.specBean}" var="specRow" width="480"> 
    <ice:column id="column2"> 
     <ice:outputText id="outputText9" value="#{specRow.choiceNum}" visible="true"/> 
     <f:facet name="header"> 
      <ice:outputText id="outputText3" value="#{msg.Choice_Number}"/> 
     </f:facet> 
    </ice:column> 
    <ice:column id="column4"> 
     <f:facet name="header"> 
      <ice:outputText id="outputText8" value="#{msg.Department}"/> 
     </f:facet> 
     <ice:selectOneMenu id="selectOneMenu2" partialSubmit="true" value="#{specRow.departmentName}"> 
      <f:selectItems id="selectOneMenu2selectItems" value="#{specRow.departmentItems}"/> 
     </ice:selectOneMenu> 
    </ice:column> 
    <ice:column id="column5"> 
     <f:facet name="header"> 
      <ice:outputText id="outputText10" value="#{msg.Specialization}"/> 
     </f:facet> 
     <ice:selectOneMenu id="collegesSelectOneMenu" partialSubmit="true" style="width: 118px" value="#{specRow.specializationName}"> 
      <f:selectItems id="selectOneMenu3selectItems22" value="#{specRow.specializationItems}"/> 
     </ice:selectOneMenu> 
    </ice:column> 
</ice:dataTable> --> 

La valeur du selectOneMenu (le String) devrait être dans une session Bean, non?

myBean La classe est en fait une application étendue. J'ai une liste de cet objet List<myBean> appelé specBean comme vous pouvez le voir dans mon code JSP où la valeur dataTable est définie à cela.

Que suggérez-vous, devrais-je avoir n différentes variables pour les noms de selectOneMenu pour enregistrer dans la session? Comment suggérez-vous de faire cela?

Répondre

0

La valeur du selectOneMenu (la chaîne) doit être dans un bean de session, n'est-ce pas?

Dépend. Si vous le placez dans un bean scoped de session, toute modification de la valeur sera reflétée/influencée vers/par plusieurs fenêtres/onglets du navigateur dans la même session. Cela peut provoquer un comportement Webapp non intuitif et ainsi entraîner une mauvaise expérience utilisateur. Une requête étendue (ou si vous êtes déjà sur JSF 2.0, vue étendue) est un meilleur choix.

La classe myBean est en fait une application étendue. J'ai une liste de cet objet appelé liste specBean comme vous pouvez le voir dans mon code JSP où la valeur de dataTable est définie à cela.

Que suggérez-vous, dois-je avoir n variables différentes pour les noms du selectOneMenu à enregistrer dans la session? Comment suggérez-vous de faire cela?

On ne sait pas ce que vous parlez, mais i et f les données est constante dans l'ensemble de l'application et peuvent être partagées entre différentes sessions/demandes, comme le List<SelectItem> pour f:selectItems, il est en effet préférable de le mettre dans une application bean tronqué.

+0

J'apprécie votre aide l'homme. Je suis désolé, je ne me suis pas suffisamment expliqué dans la deuxième partie de la question! De toute façon, je me demande maintenant si vous avez un tutoriel sur votre blog (ou si vous connaissez un autre tutoriel) sur l'utilisation de valueChangeListener avec SelectOneMenu pour changer un autre SelectOneMenu. merci encore –

+0

Oui, j'en ai un: http://balusc.blogspot.com/2007/10/populate-child-menus.html Cependant, je considère que ce code est assez méchant car cela soumet le formulaire au serveur chaque changement. De nos jours, cela peut être fait mieux avec l'aide de puissances ajaxical. Vous semblez utiliser IceFaces, je vais juste profiter de ses pouvoirs ajaxical. Je n'ai pas d'expérience pratique, donc plus de détails de moi désolé. – BalusC