jsf:
<rich:dataTable>
...
<h:column>
<f:facet name="header">
<h:commandLink action="fileSearchSort" styleClass="theader">
Name
</h:commandLink>
</f:facet>
#{f.name}
</h:column>
...
</rich:dataTable>
如果这样做:
...
<h:column>
<h:commandLink action="fileSearchSort" styleClass="theader">
<f:facet name="header">
Name
</f:facet>
</h:commandLink>
#{f.name}
</h:column>
...
标题中的标签"名称"不见了。
是否可以将整个f:facet
头作为commandLink
?
谢谢。
对于您看到的行为,<f:facet>
将被嵌套为JSF组件的直接子级,JSF组件应该拥有facet,在这种情况下就是<h:column>
。相反,将其放置在<h:commandLink>
中会使其成为<h:commandLink>
的方面,但该组件不支持名称为header
的方面,因此您将看不到任何内容。
至于具体的功能需求,JSF <h:commandLink>
组件呈现了一个HTML <a>
元素,默认情况下它是一个内联元素。如果您想让它占据父HTML <th>
元素的整个空间,那么您需要将<a>
改为块元素。只需将display: block
添加到其样式类中即可。
.theader {
display: block;
...
}
facet的元素将被呈现到某种容器中,因此,如果您在<h:commandLink>
中放置一个<span>
或<div>
标记,该标记将消耗整个区域,那么您的commandLink应该可以工作。
<h:column>
<f:facet name="header">
<h:commandLink action="fileSearchSort" styleClass="theader">
<span style="width: 100%; height: 100%;">
Name
</h:commandLink>
</f:facet>
#{f.name}
</h:column>