使用 <f:facet> 而不是属性或子组件的要点
Point of using <f:facet> instead of an attribute or a child component
我想知道为什么 <f:facet>
存在以及与仅设置属性或声明子组件相比它有什么好处。
例如,<h:dataTable>
有许多方便的属性,如 headerClass
、captionClass
、footerClass
等。页眉和页脚内容只能通过 <f:facet>
设置,而不是通过例如headerValue
或 footerValue
属性?或者作为子组件?
For example, in a dataTable, we have many attributes for setting the header (footer, caption ...) css style, why not just adding an attribute for the value (like saying headerValue for example)?
因为您不能将 JSF 组件设置为属性值。考虑一下:
<h:dataTable ... header="<h:outputLabel value="Search"><h:inputText ... />">
那只会以无效告终 XML。
没错,可以转义:
<h:dataTable ... header="<h:outputLabel value="Search"><h:inputText ... />">
但这需要将属性值重新解析为 JSF 组件树的一部分,以便使其实际工作。然后它最好在视图构建期间发生。 JSF 没有这方面的设施。它简直笨拙而且破坏了 JSF 的理念。而且,它很丑,而且维护起来很痛苦。
Or, why not having the header (footer, ...) as child components of the dataTable ?
这正是 <f:facet>
所做的。 <h:dataTable>
组件还应该如何知道您希望哪些组件最终成为页眉或页脚?
我想知道为什么 <f:facet>
存在以及与仅设置属性或声明子组件相比它有什么好处。
例如,<h:dataTable>
有许多方便的属性,如 headerClass
、captionClass
、footerClass
等。页眉和页脚内容只能通过 <f:facet>
设置,而不是通过例如headerValue
或 footerValue
属性?或者作为子组件?
For example, in a dataTable, we have many attributes for setting the header (footer, caption ...) css style, why not just adding an attribute for the value (like saying headerValue for example)?
因为您不能将 JSF 组件设置为属性值。考虑一下:
<h:dataTable ... header="<h:outputLabel value="Search"><h:inputText ... />">
那只会以无效告终 XML。
没错,可以转义:
<h:dataTable ... header="<h:outputLabel value="Search"><h:inputText ... />">
但这需要将属性值重新解析为 JSF 组件树的一部分,以便使其实际工作。然后它最好在视图构建期间发生。 JSF 没有这方面的设施。它简直笨拙而且破坏了 JSF 的理念。而且,它很丑,而且维护起来很痛苦。
Or, why not having the header (footer, ...) as child components of the dataTable ?
这正是 <f:facet>
所做的。 <h:dataTable>
组件还应该如何知道您希望哪些组件最终成为页眉或页脚?