Jsf 在p:dataTable中执行行编辑时出错

Jsf 在p:dataTable中执行行编辑时出错,jsf,primefaces,Jsf,Primefaces,我正在尝试在primefaces数据表中执行行编辑。我的问题是当我在CellEditor的inputText中输入新值时 成功调用Celledit方法但不拾取inputText中的新值时,单击edit(primefaces图标),它将拾取最初在datatable中的值。我做错了什么?我使用的是PrimeFaces3.5 这里是jsf代码 <h:form id="form1"> <p:growl id="messages" showDetail="true"/&g

我正在尝试在primefaces数据表中执行行编辑。我的问题是当我在CellEditor的inputText中输入新值时 成功调用Celledit方法但不拾取inputText中的新值时,单击edit(primefaces图标),它将拾取最初在datatable中的值。我做错了什么?我使用的是PrimeFaces3.5 这里是jsf代码

<h:form id="form1">
        <p:growl id="messages" showDetail="true"/>
        <p:panel header="Registered Devices" style="min-height: 400px;" id="paneldevices">
        <p:dataTable  emptyMessage="No Device Registered"  editable="true"  widgetVar="deviceTable" id="idGrid" value="#{deviceMgdBean.devices}" var="item" >
        <p:ajax  event="rowEdit" listener="#{deviceMgdBean.onCellEdit()}" update=":form1:messages"/>
        <p:ajax event="rowEditCancel" listener="#{deviceMgdBean.onCancel}" update=":form1:messages" />
        <p:column headerText="Options" style="width:50px">  
         <p:rowEditor  />  
        </p:column> 
        <p:column>
        <f:facet name="header">
        <h:outputText value="Device_name"/>
        </f:facet>
        <p:cellEditor>  
        <f:facet name="output">  
       <h:outputText value="#{item.device_name}"/>
       </f:facet>  
       <f:facet name="input">  
      <p:inputText value="#{item.device_name}"  style="width:80%"  />
      </f:facet>  
       </p:cellEditor>                                    
       </p:column>
       </h:form>

这是我的托管Bean

 @ManagedBean
    @ViewScoped
    public class DeviceMgdBean implements Serializable {
        public List<Devices> getDevices()
        {
            List<Devices> l=getDevdao().getDevices();//devices fetched from database

            return l;
        }
             public void onCellEdit(RowEditEvent event)
             {  
               Devices devo=(Devices) event.getObject();
               FacesMessage msg = new FacesMessage("Device Edit","Test:"+devo.getDeviceName());  
               FacesContext.getCurrentInstance().addMessage(null, msg);  
             }  

        public void onCancel(RowEditEvent event)
        {  
            FacesMessage msg = new FacesMessage("Item Cancelled");   
            FacesContext.getCurrentInstance().addMessage(null, msg); 
            Devices devo=(Devices) event.getObject();
        }



    }
    class Devices {
    private int device_id;
    private String device_name;
    //getter and setters

    }
@ManagedBean
@视域
公共类DeviceMgdBean实现可序列化{
公共列表getDevices()
{
列表l=getDevdao().getDevices();//从数据库获取的设备
返回l;
}
public void onCellEdit(RowEditEvent事件)
{  
Devices devo=(Devices)event.getObject();
FacesMessage msg=新的FacesMessage(“设备编辑”,“测试:+devo.getDeviceName());
FacesContext.getCurrentInstance().addMessage(null,msg);
}  
public void onCancel(RowEditEvent事件)
{  
FacesMessage msg=新的FacesMessage(“项目取消”);
FacesContext.getCurrentInstance().addMessage(null,msg);
Devices devo=(Devices)event.getObject();
}
}
类设备{
专用int设备_id;
私有字符串设备名称;
//二传手
}
私人列表l;
公共列表getDevices(){
if(l==null)l=getDevdao().getDevices();//从数据库中获取的设备
返回l;
}

请将您的xhtml缩进一点。如果
设备中的getter是
getDeviceName()
的话,我想该值应该更改为
value=“#{item.deviceName}”
private List<Devices> l;
public List<Devices> getDevices() {
   if(l==null) l=getDevdao().getDevices();//devices fetched from database
   return l;
}