【问题标题】:how to display a data table with blank rows using jsf 2.0如何使用 jsf 2.0 显示带有空白行的数据表
【发布时间】:2011-08-27 00:49:43
【问题描述】:

我试图在页面加载时显示一个包含 10 行的空数据表,当我尝试使用以下代码时,它不显示任何行。

<h:dataTable id="d" value="" bgcolor="#9AC8E6" border="10" cellpadding="5" cellspacing="3" rows="10" width="100%" dir="LTR" frame="hsides" rules="all" >
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Student Number" />
                        </f:facet>
                        <h:inputText value="#{10}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Student Name" />
                        </f:facet>
                        <h:inputText value="" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Standard" />
                        </f:facet>
                        <h:inputText value="" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Marks" />
                        </f:facet>
                        <h:inputText value="" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Percentage" />
                        </f:facet>
                        <h:inputText value="" > </h:inputText>
                    </h:column>
                    <h:column>            
                </h:dataTable>

需要帮助来显示具有空白列和行的数据表

更新

根据给定的解决方案我尝试了这种方式但无法解决问题

   <h:dataTable id="d" value="#{inquiryBean.blankList}" var="emptyBean" bgcolor="#9AC8E6" border="10" cellpadding="5" cellspacing="3" rows="10" width="100%" dir="LTR" frame="hsides" rules="all" >
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Item Number" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.itemNumber}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Material" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.material}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Description" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.description}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Unit" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.unit}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Quantity" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.quantity}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Delivery Date" />
                        </f:facet>
                        <h:inputText value="#{emptyBean.deliveryDate}" > </h:inputText>
                    </h:column>
                </h:dataTable>

## 豆类##

//getters and setters
List blankList = new ArrayList();

public List getBlankList() {
    InquiryBean bean = new InquiryBean();
    bean.setItemNumber("");
    bean.setMaterial("");
    bean.setDescription("");
    bean.setQuantity("");
    bean.setUnit("");
    bean.setDeliveryDate(null);
    return blankList;
}

我错过了什么吗????

【问题讨论】:

  • 关于您的更新:我不明白。您的托管 bean inquiryBean 包含相同类型的托管 bean 列表?这真的是你想要的吗?

标签: java datatable jsf-2 facelets


【解决方案1】:

如果您不想稍后再填写,您可以改用普通的 html 表格:

<table>
  <tr>
    <td>Student Number</td><td>Student Name</td> ...
  </tr>
  <tr>
    <td></td><td></td> ...
  </tr>
  <!-- 9 rows following -->
</table>

如果您想稍后填充它,您必须使用 dataTable 的 var 属性并在支持 bean 中准备一个包含 10 个(空)元素的列表:

<h:dataTable value=#{myBean.studentList} var="item">
  <h:column>
    <f:facet name="header">
       <h:outputText value="Student Number" />
    </f:facet>
     <h:inputText value="#{item.studNum}" />
  </h:column>
  ..
</h:dataTable>

【讨论】:

  • 感谢您的回复...我会填写但在页面加载时,我的页面应该显示 10 行的空数据表
  • 这就是第一个 sn-p 所做的。使用 css 或表格标签的 cellpaddingcellspacing 属性调整单元格的大小。
  • 使用纯 html 很好,但我想使用 jsf 标签...你能帮我吗
  • 第二个 sn-p 就是这样做的。另请参阅 Grzegorz 的答案。
  • @Matt 我很确定var=item 的语法不正确。不应该换成var="item"或者var='item'吗?
【解决方案2】:

您需要指定value 属性的值(抱歉,没有双关语)。这是您指定数据表行的方式。你现在拥有它的方式是指定输出表中不应该有(空)行(如果它只能工作的话)。

这就是为什么我的建议是声明一些具有 10 元素集合的 bean 可用作某些属性(如果这是您的偏好)。并且在value 属性中有一个指向这个bean 属性的EL 表达式。

你可以看看some examples on Internet(看看DataTableBean那里)。

基本上你应该:

  • 定义一个 bean(如果是纯 JSF,则在 faces-config.xml 中)
  • 定义一个包含 10 个元素的集合的 bean 实现类
  • h:dataTable 组件的value 属性中使用EL 表达式指向此集合。

更新:

根据您的更新。现在,您已经定义了看起来合适的 bean 及其实现类。但是,您的“空白列表”是一个空集合(正如名称所示)。如果你想在数据表中有 10 行,你基本上需要在你的集合上调用 add() 方法 10 次(或类似的东西)。

【讨论】:

  • 感谢您的回复...请查看我的更新并再次需要您的帮助
  • 成功了..!!非常感谢..你能澄清一下我如何在数据表的每个文本字段中输入一些数据并说提交,必须提交到数据库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2011-06-29
  • 2015-06-09
  • 2010-12-31
  • 2014-01-06
  • 2012-04-25
相关资源
最近更新 更多