0

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

谢谢。

4

2 回答 2

2

至于您所看到的行为,<f:facet>将嵌套为应该拥有方面的 JSF 组件的直接子级,在这种情况下就是<h:column>. 将它放在 a<h:commandLink>中会使其成为 的构面<h:commandLink>,但该组件不支持带有 name 的构面header,因此您什么也看不到。

至于具体的功能需求,JSF<h:commandLink>组件渲染一个 HTML<a>元素,默认情况下是一个内联元素。如果你想让它占据父 HTML<th>元素的整个空间,那么你需要制作<a>一个元素来代替。只需添加display: block到它的样式类就可以了。

.theader {
    display: block;
    ...
}
于 2011-07-02T20:07:35.693 回答
0

facet 的元素将被渲染到某种容器中,因此如果您放置在消耗整个区域的<h:commandLink>a<span>或标记中,那么您的 commandLink 应该可以工作。<div>

<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>  
于 2011-07-01T18:55:41.600 回答