《Java Server Faces 2.0,The Complete Reference》对f:facet是这样解释的:
The f:facet tag signifies a nested component that has a special relationship to its enclosing
tag. For example, stating that the “header” of a table is to be provided by a JSF component.
This element adds the component represented by the JSF action in its body as a facet with
the specified name to the component represented by the closest JSF component parent
action element. This tag only allows one component to be nested within itself. To use
multiple components as a facet, create them as children of a simple container component.
For example, nest the corresponding HTML library component actions within the body of
a panelGroup component.
意思是:f:facet表示一个"被嵌套组件",这个组件和包含它的标签有特定关系的。...(<f:facet>被嵌套组件</f:facet>,一次只能包含一个"被嵌套组件")
JSFToolBox网站上是这样解释的:
The Facet tag registers a named facet on the component associated with the enclosing tag. A facet represents a named section within a container component. For example, you can create a header and a footer facet for a dataTable component.
意思和上面差不多。
能找到的资料上基本都是举这样一个例子来试图说明f:facet的用法:
- <h:dataTable id="reportTable" value="#{reportBean.dailyReport}" var="item">
- <h:column>
- <f:facet name="header">
- <h:outputText value="Daily Report" />
- </f:facet>
- <h:outputText value="#{item}" />
- </h:column>
- </h:dataTable>
疑问来了,既然name="****"代表的是facet与包含它的组件的关系,那么这个关系是不是可以自己随便写呢?"被嵌套组件"是不是可以随便写呢?
改写上面的代码:
- <h:dataTable id="reportTable" value="#{reportBean.dailyReport}" var="item">
- <h:column>
- <f:facet name="header">
- <h:inputText value="Daily Report" />
- </f:facet>
- <f:facet name="relation">
- <h:outputText value="Daily Report" />
- </f:facet>
- <h:outputText value="#{item}" />
- </h:column>
- </h:dataTable>
运行发现header变成了不再是文字,而是一个输入框,
<f:facet name="relation"> <h:outputText value="Daily Report" /> </f:facet>没有任何输出。
结论:
The name attribute sets the name of the facet to be created. Some components have facets with predefined names, such as the "header" and "footer" facets of the component associated with the h:dataTable tag.
只有组件预先就定义好的name的facet才能被接受,比如h:dataTable就预先定义了名为"header"和"footer"的facet。<f:facet>标签对之间的内容可以是任意组件。
分享到:
相关推荐
agent-java:Facet的Java代理
<f:facet name="header"> <h:outputText id="headerText1" value="职工号"/> </f:facet> <h:outputText value="#{person.id}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText id=...
<f:facet name="header">Item Name</f:facet> #{item.name} </h:column> </h:dataTable> ``` ##### 2.2 表头、表尾 通过`<f:facet>`可以自定义表头和表尾,增加额外的灵活性。 ```html <h:dataTable value="#{...
f:facet f:loadBundle f:param f:phaseListener f:selectItem f:selectItems f:setPropertyActionListener f:subview f:validateDoubleRange f:validateLength f:validateLongRange f:validator f:...
<f:facet name="header">标题</f:facet> #{item.columnValue} </h:column> </h:dataTable> ``` 这里`#{bean.data}`是一个列表,`var="item"`表示每次迭代时的数据对象。 **2.2 表头、表尾** 表头和表尾可以...
- **功能**:`f:facet` 标签用于为包含它的父组件及其内部子组件建立特殊关系。通常用于指定标题、页脚等内容。 - **使用示例**: - JSP: ```jsp <f:facet name="header"> <h:outputText value="Title"/> </f:...
<f:facet name="header"> <h:outputText value="Title"/> </f:facet> ``` loadBundle loadBundle标签用于支持JSP本地化(多语言支持)操作。示例代码: ``` <f:loadBundle basename=...
`f:facet` 标签用于为包含它的父组件定义特殊的区域,如标题、页脚等。这有助于构建更复杂、更具有层次感的用户界面。 **基本用法:** ```jsp <f:facet name="header"> <h:outputText value="Title"/> </f:facet>...
<f:facet name="header">Item Price</f:facet> <h:outputText value="#{item.price}" /> </h:column> </h:dataTable> ``` ##### 2.2 表头、表尾 可以使用`f:facet`来指定表头和表尾的内容。 ##### 2.3 ...
<f:facet name="header">Price</f:facet> #{item.price} </h:column> </h:dataTable> ``` **说明:** 以上示例展示了如何使用`dataTable`来显示一个包含名字和价格的列表,并通过`f:facet`为每个列添加表头。 -...
- `f:facet`:定义面板的不同部分,如头部、底部等。 **应用场景:** 弹出一个包含关闭按钮的模态面板,点击按钮后面板消失。 ##### 3. `inputNumberSlider`输入数字滑竿 `inputNumberSlider`是一个用于选择数值...
`f:facet name="header"` 用于定义标题,`f:facet name="controls"` 用于定义关闭按钮等操作。 接着,我们来了解 `inputNumberSlider`。这是一个滑动条组件,允许用户通过滑动选择一个数值。虽然示例中没有提供具体...
- `header` 和 `controls`:使用 `f:facet` 来定义面板的头部和控制部分。 - **示例代码**: ```xml <rich:modalPanel id="panel" width="350" height="100"> <f:facet name="header"> <h:panelGroup> <h:...
<f:facet name="header"> <h:outputText value="日期" /> </f:facet> <h:outputText value="#{item.date}" /> </rich:column> <!-- 其他列配置 --> </rich:datatable> ``` 在这里,`value`属性指定数据列表...
<f:facet name="header">Name</f:facet> <h:inputText value="#{item.name}" rendered="#{bean.isEditing(item)}" /> <h:outputText value="#{item.name}" rendered="#{!bean.isEditing(item)}" /> </h:column> ...
2. **`<p:column>`中使用`<f:facet>`进行自定义表头时出现问题**:在某些情况下,使用`<p:column>`标签并结合`<f:facet>`定义自定义表头(例如通过`<h:outputText>`显示"XXX")会导致显示错误。特别是,当需要格式化...
<f:facet name="header">Item Name</f:facet> #{item.name} </h:column> <h:column> <f:facet name="header">Price</f:facet> #{item.price} </h:column> </h:dataTable> ``` 此代码段将生成一个包含两列...
<f:facet name="head">...</f:facet> <!-- 页面内容在这里 --> </a4j:page> </f:view> </jsp:root> ``` `a4j:page`的属性包括`selfRendered`、`lang`、`title`、`renderRegionOnly`、`onunload`、`rendered`...
- `<f:facet>`:允许向组件添加额外的显示部分。 - `<f:param>`:传递参数给动作或方法表达式。 - `<f:attribute>`:向组件添加属性。 - `<f:actionListener>`:注册操作监听器,用于响应用户的动作。 - `<f:...