2009-09-29 4 views
2

Existe-t-il un moyen d'insérer le contenu d'un fichier html dans un modèle Facelet? Le tag Facelets ne fonctionnera pas car il ne sert qu'à inclure le contenu Facelet.Inclure un contenu non-Facelet dans un modèle Facelet

En d'autres termes, je suis à la recherche de l'équivalent Facelets de la directive d'inclusion JSP <%@ include file="..." %>.

Répondre

1

Le seul mécanisme d'inclusion dans Facelets est, qui ne permet pas d'inclure du contenu arbitraire, seulement du format XML bien formaté. Il n'y a pas d'équivalent à la directive JSP include dans Facelets.

4

Je ne comprends pas nécessairement ce dont vous avez besoin, mais <ui:include> ne se limite pas au contenu des facettes, vous pouvez insérer un xhtml valide avec celui-ci, conformément à this link.

Considérez fichier suivant facelets (test.jsp):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 

    <body> 
     <f:view> 
      <h:outputText value="Text outside include"/> 
      <ui:include src="testinclude.html"/> 
     </f:view> 
    </body> 
</html> 

Et suivant le fichier HTML (testinclude.html):

<h2>Text from included page</h2> 

Il comprend correctement le contenu HTML dans la page. Cela s'applique également lorsque vous utilisez <ui:include> dans un modèle de facettes.

+1

Merci d'avoir signalé cela. Après quelques expériences, j'ai trouvé que l'inclusion d'un fragment html comme celui-ci: foo bar génère une erreur: "Contenu n'est pas autorisé en prologue." Et y compris fragment comme ceci: foo bar génère une erreur: « Le balisage dans le document suivant l'élément racine doit être bien formé. » Mais cela fonctionne: foo bar Donc le contenu inclus * doit * être bien formé xml (mais pas nécessairement valide xml). Ai-je raison de supposer que est le seul mécanisme d'insertion dans Facelets? – Tom

+0

Pour autant que je sache, oui c'est le cas. Peut-être que vous pouvez essayer d'utiliser d'autres mécanismes comme: - , que je ne peux pas dire maintenant si cela fonctionnerait, mais j'en doute. - Il y a aussi , mais la documentation RichFaces semble impliquer qu'elle a le même comportement que - Un "iframe" HTML, mais l'inclusion serait faite par le côté client. - Une balise JSF personnalisée qui rendrait le contenu d'un fichier. –

1

Le <o:resourceInclude> d'Omnifaces peut être utilisé pour inclure du contenu arbitraire directement dans la réponse. Ce qui signifie qu'il ne doit pas être bien formé xml comme avec <ui:include>. Vous pouvez également inclure du contenu dans la section <h:head> de votre page JSF, ce qui est difficile à obtenir autrement.

http://showcase.omnifaces.org/components/resourceInclude

Questions connexes