JSF:将f:sfacet头作为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

谢谢。

对于您看到的行为,<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>  

相关内容

  • 没有找到相关文章

最新更新