2009-09-10 5 views
1

Я хочу, чтобы отобразить данные с помощью h:dataTable тегов в JSF данные я отображения должен быть в формате, как это:Отображение данных с использованием JSF DataTable

Name: XXXX 
ID: 8989 
Age: 32 

Я видел несколько примеров в Интернете, что рассказать вам, как отображать данные как это:

Имя ID Возраст XXX 8989 32

Поскольку dataTable тег имеет только вспомогательный тег h:column и NO h:row У меня есть вопросов с этим. Есть лучший способ сделать это? Я внедрил первый формат , о котором я упомянул, используя h:datable и h:column, поэтому сначала я просто выписываю все заголовки столбцов в столбце 1, а затем выписываю все значения в столбце2. Проблема, с которой я сталкиваюсь, заключается в том, что когда одно из значений пустое, следующее значение печатается на своем месте, и данные появляются неправильно, это действительно проблема форматирования. Когда данные пустые, он должен оставить для этого пробел, а затем напечатать следующее значение в следующей строке. Надеюсь, что у меня есть смысл, любые мысли будут высоко оценены.


Я попытался добавить ниже:

<h6><h:outputText value="#{empty imeiInfo.userEmail ? '&#160;' : imeiInfo.userEmail}"></h:outputText></h6><br/> 

Но есть ошибка синтаксиса в этом, который я не могу понять, сообщение, которое я получаю:

Синтаксическая ошибка в Е.Л.

Любые идеи? Благодарю.

ответ

3

Это просто для не повторяющихся данных? Если да, то используйте <h:panelGrid>

Например:

<h:panelGrid columns="2"> 
    <h:outputText value="Name:"/> 
    <h:outputText value="#{person.name}"/> 
    <h:outputText value="ID:"/> 
    <h:outputText value="#{person.id}"/> 
    <h:outputText value="Age:"/> 
    <h:outputText value="#{person.age}"/> 
</h:panelGrid> 

Если для повторения данных (т. Е несколько «человека»), то у вас есть несколько вариантов в зависимости от того, что других библиотек, которые вы используете. Например:

1: Создайте собственный стол, используя Facelets <ui:repeat> (вы можете сделать то же самое с <c:for>).Например:

<table> 
    <ui:repeat value="#{myBean.persons}" var="person"> 
     <tr> 
      <td> 
       <h:outputText value="Name:"/> 
      </td> 
      <td> 
       <h:outputText value="#{person.name}"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <h:outputText value="ID:"/> 
      </td> 
      <td> 
       <h:outputText value="#{person.id}"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <h:outputText value="Age:"/> 
      </td> 
      <td> 
       <h:outputText value="#{person.age}"/> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       &#160; 
      </td> 
     </tr> 
    </ui:repeat> 
</table> 

EDIT: Я не пробовал это, но вы должны быть в состоянии окружать в первом примере (<h:panelGrid>) с <c:for>, чтобы сделать повторяющиеся элементы. <c:for> обрабатывается до <h:panelGrid>. Должно сработать.

0

Я не уверен, чтобы понять, как вы хотите сделать свой стол. Я думаю, что это поможет нам, если вы могли бы предоставить JSF код вашего стола ...

Однако относительно этой точки:

Когда данные заготовки следует оставить пространство для него и затем распечатать следующий значение в следующей строке

может быть, вы можете попробовать что-то вроде этого:

<h:outputText value="#{empty aRecord.name ? '&#160;' : aRecord.name}"/> 

Этот код отобразит нерушимое пространство, если имя записи пуст, иначе оно отобразит name записи.

Смежные вопросы