我试图在页面加载时显示一个包含 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>
## Bean 类 ##
//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;
}
我错过了什么吗???
最佳答案
您需要指定 value
属性的值(抱歉,没有双关语)。这是指定数据表行的方式。现在的方式是指定输出表中不应有(空)行(如果它有效)。
这就是为什么我的建议是声明一些 bean,它有一个 10 元素集合可用作某些属性(如果这是您的偏好)。并在 value
属性中有一个指向该 bean 属性的 EL 表达式。
您可以看看some examples on Internet (看看那里的DataTableBean
)。
基本上你应该:
- 定义一个 bean(如果是普通 JSF,则在
faces-config.xml
中) - 定义一个包含 10 个元素的集合的 Bean 实现类
- 使用
h:dataTable
组件的value
属性中的 EL 表达式指向此集合。
更新:
根据您的更新。现在您已经定义了一个看起来合适的 bean 及其实现类。但是,您的“blankList”是一个空集合(正如名称所示)。如果您希望数据表中有 10 行,您基本上需要对集合调用 add()
方法 10 次(或类似的操作)。
关于java - 如何使用jsf 2.0显示带有空白行的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027799/