<f:facet>做什么以及何时应该使用它?

hel*_*123 47 xhtml jsf facet primefaces

我一直遇到标签问题<f:facet>.我正在使用它的其他代码示例,但我不确定它的用途是什么.

我已经编写了一些代码,这些代码在方法上与我见过的其他代码完全相同,除非它包含在<f:facet name=actions>标记中.当我在我的代码周围添加它时,我正在包装它的下拉框在我部署时消失.任何人都可以为此提出建议或让我深入了解如何以及何时使用方面?

这是我的代码,我不打扰添加bean代码,因为它们只是基本的getter和setter,我不认为它们会造成麻烦.

<f:facet name="actions">
    <p:selectOneMenu id="SwitchWeekDrpDwnMenu" 
                     value="#{depotWorkloadBean.selectView}"
                     partialSubmit="true">
        <p:ajax update="mainForm" 
                listener="#{depotWorkloadBean.updateView}" />
        <f:selectItem itemLabel="Day view" itemValue="Day"/>
        <f:selectItem itemLabel="01/01/2014" itemValue="Week"/>
    </p:selectOneMenu>
</f:facet>
Run Code Online (Sandbox Code Playgroud)

如果我删除了facet标签,则显示下拉框,但不能正常运行.

Flo*_*owy 16

facet表示容器组件中的命名部分.例如,您可以为dataTable组件创建页眉和页脚构面. http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html

当您想要创建使用来自用户的某些代码的组件时(例如包装器),它非常有用.

即.当你想创建隐藏长文本的组件并显示它的短版本时.你可以只使用元素体,但是你只能获得一个值,如果你想从用户那里获得短版和长版,那么就不能用一个值来做(不使用一些判别式),只需使用facet和说哪一个是长的,哪个是短版本.

<textShortener>
    <f:facet name="short">
        This text is short.
    </f:facet>
    <f:facet name="long">
        This text is too <b>long</b to be showed when page loads. User have to click the button after the short text to show this.
    </f:facet>
</textShortener>
Run Code Online (Sandbox Code Playgroud)

是的,这可以(而且应该)用jsf模板完成,但我希望你能得到它.

要问:你在野外xml中定义了facet,没有人请求它,所以没有人处理它 - 这就是为什么它没有抛出错误也没有显示任何东西.