如何将参数从模板客户端传递到主模板,然后在复合属性中使用它?

时间:2012-09-28 12:00:27

标签: jsf parameters facelets

我有一个复合组件(导航栏),它采用一个名为“activeIndex”的变量来确定哪个选项卡是活动的(显然)。导航栏是一个复合组件,其属性如下:

<!-- INTERFACE -->
<cc:interface>
    <cc:attribute name="tab"/>
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>

    <pou:tabMenu activeIndex="#{cc.attrs.tab}" 
                 styleClass="margin-top-52">  

        <pou:menuitem value="Home" url="#" />  
        <pou:menuitem value="About" url="#"/> 
        <pou:menuitem value="iConsult" url="#"/> 
        <pou:menuitem value="Contact" url="#"/>  

    </pou:tabMenu> 

</cc:implementation>

所以从这里我可以使用以下命令传递活动标签:

<!-- Composite Navigation -->
<ez:anonymous-navigation tab="2"/>

问题是上面的代码放在template.xhtml中,我不想在模板中指定选项卡值2。相反,我需要从实现模板的页面传回此值,该模板又将其传递给上面的代码。

1 个答案:

答案 0 :(得分:4)

使用<ui:param>。这是一个启动示例:

client.xhtml

<ui:composition template="/WEB-INF/template.xhtml"
    xmlns="..."
>
    <ui:param name="tab" value="2" />
    ...
</ui:composition>

/WEB-INF/template.xhtml

<ez:anonymous-navigation tab="#{tab}"/>