【问题标题】:Why hard coded value for p:inputText in p:dataTable showing blank value?为什么 p:dataTable 中 p:inputText 的硬编码值显示空白值?
【发布时间】:2014-05-19 18:44:23
【问题描述】:

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

这是什么原因!!!!

【问题讨论】:

  • 空白是指 HTML 输入元素在呈现时框内没有文本?如果是这样,您可以发布呈现的输入元素的 HTML 代码吗?
  • 尝试使用:
  • @Walker 它没有帮助:)
  • @MarkRobinson 是 Html 输入元素,没有文本。渲染的 html 代码

标签: jsf primefaces datatable


【解决方案1】:

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

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

【讨论】:

  • 问题是为什么静态值在数据表外显示时没有显示在数据表内。外部我的意思是 在数据表之外进行硬编码
【解决方案2】:

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

由于您为所有列显示相同的 name 常量值,您可以使用 bean 中定义的字符串常量并从组件的 value 属性访问它,它应该可以工作。

使用它有点令人惊讶

 <p:inputText value="srikanth"></p:inputText>

在页面上的 dataTable 之外会产生 html 代码 &lt;input type="text" value = "srikanth" ...&gt;,但在 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>

上面的代码可以在 table's footer 内生成一个 html &lt;input value="srikanth"...&gt;。 似乎静态内容更适合放置在表格列的页眉和页脚区域内,而实际内容应通过 dataTable 的 value 和 var 属性提供。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2017-01-16
    • 1970-01-01
    • 2013-06-05
    相关资源
    最近更新 更多