【问题标题】:Displaying data using JSF dataTable使用 JSF dataTable 显示数据
【发布时间】:2010-11-27 01:25:56
【问题描述】:

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

Name:   XXXX
ID:  8989
Age:    32

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

姓名 ID 年龄 XXX 8989 32

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


我尝试添加以下内容:

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

但是其中有一个我无法弄清楚的语法错误,我得到的消息是:

EL 语法错误

有什么想法吗?谢谢。

【问题讨论】:

    标签: jsf datatable


    【解决方案1】:

    它只是用于非重复数据吗?如果是这样,请使用&lt;h:panelGrid&gt;

    例如:

    <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 &lt;ui:repeat&gt; 构建您自己的表(您可以使用 &lt;c:for&gt; 执行相同的操作)。例如:

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

    编辑:我还没有尝试过,但您应该能够在第一个示例 (&lt;h:panelGrid&gt;) 中用 &lt;c:for&gt; 包围以呈现重复元素。 &lt;c:for&gt;&lt;h:panelGrid&gt; 之前得到处理。应该可以。

    【讨论】:

      【解决方案2】:

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

      但是,关于这一点:

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

      也许你可以试试这样的:

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

      如果记录名称为空,这段代码会渲染一个牢不可破的空格,否则会渲染记录的name

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-15
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-24
        • 2019-06-06
        • 2018-02-15
        相关资源
        最近更新 更多