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