【发布时间】:2013-07-23 08:34:36
【问题描述】:
我正在实现一个 p: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>
以及backing bean方法:
public void newCellEditListener(CellEditEvent event){
... Some work here ...
}
当可编辑单元格上的值发生更改时,p:cellEditor 会按预期工作。
问题是:
当可编辑单元格上的值保持不变时,p:cellEditor 会在实际应该显示 item.description 时显示 item.id。
我是否遗漏了一些明显的东西?我需要额外的配置吗?
我一直在谷歌上搜索提示或答案,但没有成功。
更新
以下代码仍然存在同样的问题:
<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>
backing bean 上的值输入和输出是一样的,彼此的区别应该是'货币'格式。
更新
作为一种解决方法,我使用“p:commandButton”来更新数据表。
<p:commandButton icon="ui-icon-refresh" update="newDataTable" value="Update" />
应用正在运行:
- Primefaces 3.5
- Primefaces 扩展 0.7.1
- Mojarra 2.1.22
- 雄猫 7
感谢您的帮助。 亲切的问候。
【问题讨论】:
-
为什么要为
outputfacet 使用输入组件?为什么不是<h:outputText/>? -
@kolossus 实际上,用户希望看到输入文本
标签: jsf jsf-2 primefaces