2

我正在实现 ap:dataTable 组件,基于Primefaces Showcase

代码是:

<p:dataTable
    id="newDataTable"
    editable="true"
    editMode="cell"
    var="item"
    value="#{myBean.listNewDataTable}">

    <p:ajax event="cellEdit" listener="#{myBean.newCellEditListener}" update="@this"/>
    <p:column width="150" >
        <p:cellEditor>
            <f:facet name="output">
                <h:inputText value="#{item.description}" readonly="true"/>
            </f:facet>
            <f:facet name="input">
                <p:selectOneMenu value="#{item.id}" style="width: 90%;">
                    <f:selectItems value="#{myBean.productsMap.entrySet()}" var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
                </p:selectOneMenu>
            </f:facet>
        </p:cellEditor>
    </p:column>
    -- More Data --
</p:dataTable>

以及支持bean的方法:

public void newCellEditListener(CellEditEvent event){
    ... Some work here ...
}

当可编辑单元格上的值发生更改时, p:cellEditor 将按预期工作。

问题是:

当可编辑单元格上的值保持不变时,p:cellEditor 会显示 item.id,而实际上它应该显示 item.description。

我错过了一些明显的东西吗?我需要额外的配置吗?

我一直在谷歌搜索提示或答案,但没有成功。

更新

以下代码仍然存在相同的问题:

<p:column headerText="Money" width="150" >
    <p:cellEditor >
        <f:facet name="output">
            <h:inputText value="#{actual.money}" readonly="true">
                <f:convertNumber type="currency" />
            </h:inputText>
        </f:facet>
        <f:facet name="input">
            <h:inputText value="#{actual.money}">
            </h:inputText>
        </f:facet>
    </p:cellEditor>
</p:column>

支持 bean 上的值对于输入和输出是相同的,彼此之间的差异应该是“货币”格式。

更新

作为一种解决方法,我使用“p:commandButton”来更新数据表。

<p:commandButton icon="ui-icon-refresh" update="newDataTable" value="Update" />

该应用程序正在运行:

  • Primefaces 3.5
  • Primefaces 扩展 0.7.1
  • 莫哈拉 2.1.22
  • 雄猫 7

谢谢你的帮助。亲切的问候。

4

2 回答 2

0

在 Primefaces 问题网站上找到报告并修复的问题:http ://code.google.com/p/primefaces/issues/detail?id=6116

我下载了 4.0.RC1,我确实看到问题已得到解决,但 4.0 与 3.5 存在一些重大差异,因此我将等待 3.5.15 发布。

于 2013-09-24T16:40:31.673 回答
0

输出和输入的值应该相同。尝试解决这个问题。

于 2013-07-24T10:10:59.713 回答