JSF: сделать заголовок f: facet как commandLink - PullRequest
0 голосов
/ 01 июля 2011

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 ]

2 голосов
/ 03 июля 2011

Что касается поведения, которое вы видите, то <f:facet> должен быть вложенным как прямой дочерний элемент компонента JSF, который должен иметь фасет, который в данном случае, таким образом, <h:column>. Помещение его внутрь <h:commandLink> вместо этого сделает его фасетом <h:commandLink>, но этот компонент не поддерживает фасет с именем header, поэтому вы ничего не увидите.

Что касается конкретного функционального требования, компонент JSF <h:commandLink> отображает элемент HTML <a>, который по умолчанию является элементом inline . Если вы хотите, чтобы он занимал все пространство родительского элемента HTML <th>, вам нужно вместо этого сделать элемент <a> a block . Просто добавьте display: block в свой класс стилей.

.theader {
    display: block;
    ...
}
0 голосов
/ 01 июля 2011

Элементы фасета будут визуализированы в некоторый контейнер, поэтому если вы поместите в тег <h:commandLink> a <span> или <div>, который занимает всю область, то ваша команда linkLink должна работать.

<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>  
...