我正在尝试使用 prime faces 的功能,它允许用户编辑表格本身中的单元格数据。我已点击此链接来实现它: Primefaces showcase
当我说编辑表格中的单元格时,输入的新值不会发送到 bean。它仍然只显示旧值。
我的代码 JSF:
<h:form id="testform">
<p:growl id="messages" showDetail="true" />
<p:outputPanel id="testContainer" deferred="true">
<p:remoteCommand name="oncompleteCellEdit" update="cars messages" />
<p:dataTable id="cars" var="car" value="#{articlesbean.LMatpilotaccess1}" editable="true" editMode="cell" widgetVar="carsTable" update=":cars">
<f:facet name="header">
Matériel du pilotage et accessoires
</f:facet>
<p:ajax event="cellEdit" listener="#{articlesbean.onCellEdit}" oncomplete="oncompleteCellEdit()" update=":testform:messages" />
<p:column headerText="Serie" style="width:25%">
<p:cellEditor >
<f:facet name="output"><h:outputText value="#{car.serie}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput16" value="#{car.serie}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Cap" style="width:25%">
<p:cellEditor >
<f:facet name="output"><h:outputText value="#{car.cap}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput15" value="#{car.cap}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</p:outputPanel>
</h:form>
我的代码bean
@ManagedBean(name="articlesbean")
@ViewScoped
public class ArticlesBean implements Serializable{
@Inject
private ArticlesDAO articleDAO;
private Matpilotaccess1 matpilotaccess1;
public void onCellEdit(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
System.out.println("/////"+(event.getNewValue());
System.out.println("/////"+(event.getOldValue());
FacesContext context = FacesContext.getCurrentInstance();
Matpilotaccess1 mpltiacc = context.getApplication().evaluateExpressionGet(context, "#{mpltiacc}", Matpilotaccess1.class);
articleDAO.Updatetable(mpltiacc);
}
/////////Getters and Setters
}
作为
的结果System.out.println("/////"+(event.getNewValue());
System.out.println("/////"+(event.getOldValue());
我在这两种情况下都得到了旧值!!!
谁能告诉我如何获得新值???我正在使用 Jboss 7 和 primefaces4 谢谢
最佳答案
您需要使用@SessionScoped 注释来注释您的bean。
关于java - Primefaces 在单元格中编辑数据表 event.getNewValue() 将旧值发送给bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120310/