为什么p:inputText的硬编码值在p:dataTable中显示空白值?

时间:2014-05-19 18:44:24

标签: jsf primefaces datatable

       <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行,第一列正确显示序列号,但所有行中的第二列显示为空白,即使我硬编码列值。

这背后的原因是什么!!!!

2 个答案:

答案 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属性提供。