2010-05-21 9 views
0

J'utilise seam pour développer une application web simple. En utilisant a4j commandButton dans de nombreux endroits, avec la propriété rerender = "componentName"Seam reRender component in partial; reRender à travers des conteneurs de nommage

componentName est dans la plupart des endroits un a4j outputPanel

Ce qui a toujours travaillé, jusqu'à ce que j'utilisé un modèle. avec inclure de deux vues différentes. reRender appliqué à l'ensemble de la vue fonctionne, mais reRender appliqué à un composant interne ne fonctionne pas.

Même problème avec les règles de page, toutes les actions que j'avais définies ne fonctionnent plus.

Est-ce un problème avec Seam, quelqu'un a-t-il vécu cela?

<a4j:outputPanel id="panel1"> 
      <h:form> 
        <div class="section"> 
             // whatever code 
           </div> 

<a4j:commandButton id="button1" value="Add" action="#{bean1.action()}" reRender="panel1"/> 
<h:commandButton id="reset" value="Reset" action="#{bean1.reset}"/> 
</h:form> 

</a4j:outputPanel> 

Répondre

1

Pour reRender dans des conteneurs de noms dont vous avez besoin quelque chose comme reRender=":myComponent" - le côlon au début indique l'emplacement absolu du composant dans l'arborescence des composants. Sinon, tous les identifiants sont réalisés par rapport au conteneur de nommage actuel, ce qui serait une forme dans ce cas.

Voir UIComponent.findComponent(..)

+0

Ce code n'est qu'un exemple. dans d'autres cas, je ne veux pas que le panneau soit dans le formulaire. J'ai des pages avec beaucoup de formes. et un bouton devrait rafraîchir un ou plusieurs autres panneaux. pas celui que vous recommandez devrait être dans ce formulaire. – Marc

+0

Merci. Ça marche – Marc