2010-01-28 3 views
1

Je suis nouveau à JSF, donc j'ai beaucoup de problèmes avec lui. J'ai beaucoup résolu, mais maintenant j'ai un problème quand je fais un composant composite de la colonne.jsf 2 problème de composant composite lors de l'utilisation f: facette

Voici le code:

myPage.xhtml:

<h:dataTable > 
    <util:myCol /> 
</h:dataTable> 

myCol.xhtml:

<composite:interface> 
</composite:interface> 
<composite:implementation> 
    <h:column> 
     <f:facet name="header" > 
      <h:outputText value="user name" /> 
     </f:facet> 
     <h:outputText value="some data" /> 
    </h:column> 
</composite:implementation> 

Le problème est que la colonne ne rend pas.

J'ai donc changé un peu dans le code:

myPage.xhtml:

<h:dataTable > 
    <h:column> 
     <util:myCol /> 
    </h:column> 
</h:dataTable> 

myCol.xhtml:

<composite:interface> 
</composite:interface> 
<composite:implementation> 
    <f:facet name="header" > 
     <h:outputText value="user name" /> 
    </f:facet> 
    <h:outputText value="some data" /> 
</composite:implementation> 

Ici la colonne rend, mais l'en-tête "nom d'utilisateur" ne semble pas .

Comment résoudre le problème? Merci d'avance.

+0

Ma solution, voir: http://stackoverflow.com/questions/7891650/using-compositeinsertfacet-renderfacet-does-not-work-inside-tdatatable/9091313#9091313 –

Répondre

0

Le rendu est-il correct lorsque vous avez tous les JSF sur une page? Configurer votre JSF sur une seule page au début peut être utile pour s'assurer que les bases sont correctes; après cela fonctionne, vous pouvez le décomposer en composants composites.

Aussi, j'ai remarqué (en utilisant JSF et Richfaces) que parfois vous ne pouvez pas séparer les 'parents' et les 'enfants' à la fois; un riche: toolBar et c'est riche: toolBarGroup doit être sur la même page, par exemple. Je n'ai pas beaucoup travaillé avec Facelets, donc vous pourriez avoir une situation différente.

Bonne chance.

Edit:

essayer de tirer la tête hors de la commande composite, i.e. .:

<h:dataTable > 
    <h:column> 
     *HEADER_FACET_GOES_HERE* 
     <util:myCol /> 
    </h:column> 
</h:dataTable> 
+0

merci vous j'essaie que quand je mets tout le code dans une page fonctionne bien mais même problème quand séparé il ... aidez-moi :( – afi

+0

J'ai modifié ma réponse, et je pense que l'exemple que j'ai donné devrait fonctionner pour vous maintenant –

1

Cas 1:

dataTable ne traite column contrôle children sous forme de colonnes. Vous ajoutez un contrôle composite au dataTable et un column au contrôle composite.

Cas n ° 2:

Le problème est probablement à voir avec où les facettes sont définies. Ils sont définis sur un map sur le contrôle parent. Le contrôle que vous ajoutez la facette header à est le contrôle composite, pas le column.

Remarque: les liens sont à JSF 1.2 (JEE5), mais le principe s'applique toujours.

+0

merci beaucoup mais je ne comprends pas ce qu'il faut faire pour que mon application fonctionne par utilisation cloumn Composant composite avec facette ... – afi

+0

Vous devrez probablement utiliser l'attribut McDowell

+0

ce que vous voulez dire "Puisqu'il n'y a pas un tel composant, vous devrez en écrire un" ... J'ai lu les spécifications et j'ai trouvé UIColumn. s'il vous plaît donnez-moi un exemple clair sur faire Colonne composite .. merci et je suis tellement désolé pour mes questions – afi

0

Utilisez composite:facet dans l'interface et composite:renderFacet ou composite:insertFacet dans la mise en œuvre.

<composite:interface> 
    <composite:facet name="foo"/> 
    <composite:attribute name="value"/> 
</composite:interface> 
<composite:implementation> 
    <h:inputText id="value" value="#{cc.attrs.value}"/> 
    <composite:renderFacet name="foo"/> 
    <composite:insertChildren/> 
</composite:implementation> 

1

Je ne sais pas si vous suivez toujours ce fil, mais nous avons eu des problèmes en raison de l'insertion des facettes d'un bug. Démarrage du contenu à l'intérieur de la facette avec un commentaire (commentaire côté serveur <! - - - ->) peut résoudre le problème montrant le contenu. Nous avons rencontré des problèmes avec des facettes ayant un liners dedans .. mettre un commentaire supplémentaire comme la première déclaration est la solution de contournement pour le problème.

Meilleures salutations, Gijs

Questions connexes