2009-09-10 110 views
1

显示数据我想用在JSF 的h:dataTable标签我显示的数据必须是在这样的格式来显示数据:使用JSF的dataTable

Name: XXXX 
ID: 8989 
Age: 32 

我已经看到了网络上的几个例子是告诉你如何显示 数据是这样的:

名称ID年龄 XXX 8989 32

由于dataTable标签只有一个子标签h:column和NO h:row我对此有 问题。有一个更好的方法吗?我已经使用h:datableh:column实现了我提到的第一个 格式,所以首先我写出列1中的所有列标题,然后写出列2中的所有值。我面临的问题是,当其中一个值为空时,下一个值将被打印到它的位置,并且数据显示错误,这实际上是一个格式问题。当数据为空时,它应该为它留出空间,然后在下一行打印下一个值。 希望我有道理,任何想法都将不胜感激。


我尝试添加以下:

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

但在这一个语法错误,我想不通,我得到的消息是:

语法错误在EL

任何想法?谢谢。

回答

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> 

编辑:我没有用<c:for>尝试这样做,但你应该能够环绕在第一个例子(<h:panelGrid>)来呈现重复元素。 <c:for><h:panelGrid>之前得到处理。应该管用。

0

我不确定要了解如何渲染表格。我认为这将帮助我们,如果你能提供你的表的JSF代码...

然而,关于这一点:

当数据是空白的它应该离开 空间,然后打印下一行

在明年 价值也许你可以尝试这样的事情:

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

如果记录的名称为空,此代码将呈现牢不可破的空间,否则将渲染记录的name