<p:column headerText="serial no">
<h:outputText value="#{helloBean.serialNo}"></h:outputText>
</p:column>
<p:column headerText="name">
<p:inputText value="srikanth"></p:inputText>
</p:column>
</p:dataTable>
以上是由10个对象组成的列表,序列号从1到10.数据表呈现10行,第一列正确显示序列号,但所有行中的第二列显示为空白,即使我硬编码列值。
这背后的原因是什么!!!!
答案 0 :(得分:0)
对第二列使用h:outputText标记,这将呈现值。如果要提供输入,请使用p:inputText标记。
<p:column headerText="name">
<h:outputText value="srikanth"></h:outputText>
</p:column>
答案 1 :(得分:0)
我认为JSF中dataTable的工作方式是你在表级定义了两个重要的属性值和var,这里的值是你要迭代的POJO的集合/ arraylist,val是list / POJO中的一个项目一次。在表列中使用JSF组件的value属性,可以访问POJO的特定属性的值并显示它们的值。表中显示的行数取决于arrayList的大小。例如,员工表在不同列中具有不同的员工属性。因此,一种好方法似乎是迭代表的value属性并相应地呈现列。
这里因为你为所有列显示了name的相同常量值,你可以使用bean中定义的字符串常量并从组件的value属性访问它,它应该可以工作。
使用
有点令人惊讶 <p:inputText value="srikanth"></p:inputText>
在页面上的dataTable之外导致html代码<input type="text" value = "srikanth" ...>
,但它在dataTable中不起作用。
使用列的页脚面后,我可以看到inputText值:
<p:dataTable>
<p:column >
<f:facet name = "header">name</f:facet>
<f:facet name="footer"><p:inputText value="srikanth"></p:inputText></f:facet>
</p:column>
</p:dataTable>
上面的代码可以在表格的页脚中生成一个html <input value="srikanth"...>
。
看起来静态内容更适合放在表格列的页眉和页脚区域内,而实际内容应该通过dataTable的value和var属性提供。