Java 如何使用JSF2.0显示带有空行的数据表

Java 如何使用JSF2.0显示带有空行的数据表,java,datatable,jsf-2,facelets,Java,Datatable,Jsf 2,Facelets,我试图在页面加载中显示一个包含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>

我试图在页面加载中显示一个包含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>

我遗漏了什么吗???

如果您以后不想填写,您可以使用普通html表格:

   <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>
<table>
  <tr>
    <td>Student Number</td><td>Student Name</td> ...
  </tr>
  <tr>
    <td></td><td></td> ...
  </tr>
  <!-- 9 rows following -->
</table>

您需要指定
value
属性的值(对不起,没有双关语)。这是指定数据表行的方式。现在的方式是指定输出表中不应有(null)行(如果它只起作用)

   <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>
这就是为什么我的建议是声明一些bean,它将有一个10元素集合作为一些属性(如果您喜欢的话)。在
value
属性中有一个指向这个bean属性的EL表达式

   <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>
您可以看一下(在那里看一下
DataTableBean

   <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>
基本上你应该:

   <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>
  • 定义一个bean(在
    faces config.xml
    中,如果它是一个普通的JSF)
  • 定义一个包含10个元素集合的bean实现类
  • 使用
    h:dataTable
    组件的
    value
    属性中的EL表达式指向此集合
更新:

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

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

谢谢你的回复…我会填充它,但是在页面加载时,我的页面应该显示空的数据表,其中有10行,这就是第一个代码片段的作用。使用css或表格标记的
单元格填充
单元格间距
属性调整单元格大小。使用普通html很好,但我想使用jsf标记…你能帮我吗?第二个代码片段就是这样做的。另请参见Grzegorz答案。@Matt我很确定
var=item
的语法不正确。是否应该将其替换为
var=“item”
var=“item”
?感谢您的回复…请查看我的更新,并需要您的帮助才能再次工作。。!!非常感谢..你能澄清一下我如何在datatable的每个文本字段中输入一些数据,然后说提交,这必须提交到数据库关于你的更新:我不明白。您的托管bean inquiryBean包含相同类型的托管bean列表?这真的是你想要的吗?
   <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>