如何在其他定义中设置定义

时间:2010-01-15 13:27:44

标签: jsf richfaces seam

我正在使用jboss,seam,richfaces开发一个Web应用程序。

我正在使用模板(xhtml)作为所有其他人的母版页,并且我设置了两个插入标记。 <ui:insert name="head"/> <ui:insert name="body"/>

问题是,在使用此母版页作为模板的网页中,必须在<ui:define name="head">...</ui:define>内定义<ui:define name="body">...</ui:define>

  

我该怎么做?

基本上,我想要的是做以下事情:

  

<ui:define name="body">... <ui:define name="head"> <meta name="title" content="#{something.title}" /> </ui:define> ...</ui:define>

母版页必须在<meta name="title" content="#{something.title}" />

上返回<ui:insert name="head"/>

提前致谢

2 个答案:

答案 0 :(得分:1)

我不认为facelets是这样的。它编译并读取模板。

所以我认为你可以定义你想要的定义数量,而不关心嵌套。

即:

//In your template.xhtml
<ui:insert name="outer">
    BLA BLA BLA
    <ui:insert name="inner"/>
    BLA BLA BLA
</ui:insert>

当你想简单地使用这个模板时:

 <ui:define name="outer">
    Here you can overwrite outer (This will probably overwrite inner, not sure, you need to test it)
 </ui:define>

 <ui:define name="inner">
    Or you can ONLY overwrite inner here if you want
 </ui:define>

答案 1 :(得分:0)

您可以使用<ui:param>在每个页面上定义content。例如

在模板中:

<meta name="title" content="#{titleParam}" />

在使用模板的页面中:

<ui:param name="titleParam" value="customValueForThisPage" />