2010-07-08 4 views
1

Ma condition est la suivante: J'ai une entrée de texte et chaque fois qu'un événement de changement de valeur se produit, une liste de sélection multiple doit être remplie. Si aucun enregistrement correspondant n'est trouvé, une entrée de texte doit apparaître au lieu d'une liste de sélection multiple.Modification dynamique de la visibilité des composants JSF

<h:column> 
<h:selectManyListbox size="3" value="#{hostInfoBean.gateKeeperendPointReference}" rendered="#{hostInfoBean.selectManyRendered}"        id="gateKeeperendPointReference"> 
<f:selectItems value="#{hostInfoBean.gateKeeperendPointReferenceItems}" /> 
</h:selectManyListbox> 
<h:inputText id="gateKeeperendPointReferenceText" size="30" rendered="#{!hostInfoBean.selectManyRendered}"> 
</h:inputText> 
</h:column> 

Aussi j'utilise a4j pour la valeur d'écoute de changement,

<a4j:support event="onchange"     reRender="hostInfo:gateKeeperendPointReference" focus="GFacPath" 
        ajaxSingle="true" /> 

« selectManyRendered » est une valeur booléenne qui je déterminant dans la fève de JAVA. Le programme fonctionne uniquement pour la valeur par défaut de la variable booléenne. Si la valeur booléenne est modifiée pendant l'exécution, la bascule entre la visibilité de selectManyListbox et inputText ne fonctionne pas. S'il vous plaît, aidez à résoudre ce problème. Est-ce que je manque quelque chose?

salutations, Suresh

Répondre

4

Si le « rendu » attribut résout false, le composant est pas dans votre arbre et ne peuvent pas être trouvés comme cible « de rerender ». Lorsque vous avez des composants rendus conditionnellement, vous souhaitez les placer dans un composant toujours disponible en tant que cible, comme suit:

<h:inputText value="#{myBean.text}" > 
    <a4j:support event="onkeyup" reRender="listZone" ajaxSingle="true" /> 
</h:inputText> 
<h:panelGroup id="listZone"> 
    <h:selectManyListbox value="#{myBean.list}" rendered="#{myBean.renderList}" > 
    <f:selectItems value="#{myBean.listItems}" /> 
    </h:selectManyListbox> 
    <h:inputText size="30" rendered="#{!myBean.renderList}/> 
<h:panelGroup id="listZone"> 
+0

Merci beaucoup pour la mise à jour. Je vais essayer cela et mettre à jour – Suresh

Questions connexes