JSF:将f:facet头作为commandLink

时间:2011-07-01 16:58:21

标签: jsf header facet commandlink

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

感谢。

2 个答案:

答案 0 :(得分:2)

至于你所看到的行为,<f:facet>将被嵌套为JSF组件的直接子组件,该组件应该拥有facet,在这种情况下是<h:column>。将其置于<h:commandLink>内将使其成为<h:commandLink>的方面,但该组件不支持名为header的构面,因此您什么也看不见。< / p>

对于具体的功能需求,JSF <h:commandLink>组件呈现HTML <a>元素,默认情况下为inline元素。如果您想让它占据父HTML <th>元素的整个空间,那么您需要改为<a> block元素。只需将display: block添加到其样式类即可。

.theader {
    display: block;
    ...
}

答案 1 :(得分:0)

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>