我想使用JSF中的h:dataTable标签显示数据 我显示的数据必须采用以下格式:

Name:   XXXX
ID:  8989
Age:    32

我在网上看到了几个告诉你如何显示的例子 像这样的数据:

名称ID年龄     XXX 8989 32

由于dataTable标签只有一个子标签h:column而且我没有h:row 这个问题。有一个更好的方法吗?我实施了第一个 格式我提到使用h:datable和<=>,所以首先我只写出第1列中的所有列标题,然后写出column2中的所有值。我面临的问题是,当其中一个值为空时,下一个值将打印在其位置并且数据显示错误,这实际上是格式化问题。当数据为空时,它应为其留出空间,然后在下一行中打印下一个值。 希望我有意义,任何想法都会受到赞赏。


我尝试添加以下内容:

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

但是这里有一个语法错误,我无法弄清楚,我得到的信息是:

  

EL中的语法错误

有什么想法吗?感谢。

有帮助吗?

解决方案

仅用于非重复数据吗?如果是这样,请使用<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>

编辑:我没有尝试过,但您应该能够在第一个示例(<=>)中用<=>包围,以呈现重复元素。 <=>在<=>之前处理。应该工作。

其他提示

我不确定你想要如何呈现你的桌子。如果您能提供表格的JSF代码,我认为这对我们有帮助......

然而,关于这一点:

  

当数据为空时应该离开   它的空间,然后打印下一个   下一行的值

也许你可以尝试这样的事情:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top