为什么对p:input的值进行硬编码p:dataTable中的Text显示空白值



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

上面是由序列号为1到10的10个对象组成的列表。数据表呈现为10行,第一列正确显示序列号,但所有行中的第二列显示为空,即使我硬编码了列值。

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

第二列也使用h:outputText标记,这将呈现值。如果要提供输入,请使用p:inputText标记。

<p:column headerText="name">
<h:outputText value="srikanth"></h:outputText>
</p:column>

我认为JSF中dataTable的工作方式是在表级别定义了两个重要的属性value和var,这里value是要迭代的POJO的集合/数组列表,val是列表/POJO中的一个项目。在使用JSF组件值属性的表列中,您可以访问POJO的特定属性的值并显示它们的值。表中显示的行数将取决于arrayList的大小。例如,在不同列中具有不同员工属性的Employee表。所以一个好方法似乎是迭代表的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属性提供。

相关内容

  • 没有找到相关文章

最新更新