JSF无法将对datatable行的更改保存到数据库中
我有一张数据表。我从数据库中填充它。其中一个字段是由复选框表示的布尔值。我希望如果我选中或取消选中复选框,我可以将更改保存回数据库 我已经尝试将行的当前值传递给托管bean进行保存,但是复选框的新值没有反映在当前行对象中。如何将更改获取到当前行对象中,以便成功地将更改保存到数据库中 这就是我现在正在做的。。。我已经尽力提供所需要的东西。如果信息太多或太少,请告诉我。谢谢JSF无法将对datatable行的更改保存到数据库中,jsf,datatable,Jsf,Datatable,我有一张数据表。我从数据库中填充它。其中一个字段是由复选框表示的布尔值。我希望如果我选中或取消选中复选框,我可以将更改保存回数据库 我已经尝试将行的当前值传递给托管bean进行保存,但是复选框的新值没有反映在当前行对象中。如何将更改获取到当前行对象中,以便成功地将更改保存到数据库中 这就是我现在正在做的。。。我已经尽力提供所需要的东西。如果信息太多或太少,请告诉我。谢谢 @ManagedBean(name = "itemManagerBean") @ViewScoped public class
@ManagedBean(name = "itemManagerBean")
@ViewScoped
public class ItemManagerBean implements Serializable {
...
public ArrayList<Item> getAllItemsForUser() {
List list = ecf.findByPartyId(user.getPartyId());
ArrayList<Item> itemList = new ArrayList<>(list);
return (itemList);
}
...
public String saveItem(Item item){
System.out.println(item.toString());
ecf.updateRecord(item);
return (null);
}
}
//item class
public class Item {
private BigInteger itemId;
private String name;
priave boolean saleable; //database column is not null
//getters and setters
}
//facelet
<h:form>
<p:dataTable id="id_itemList"
var="item"
value="#{itemManagerBean.allItemsForUser}" >
<p:column headerText="ID">
<h:outputText value="#{item.itemId}" />
</p:column>
<p:column headerText="Name">
<h:outputText value="#{item.name}" />
</p:column>
<p:column headerText="Saleable" >
<p:selectBooleanCheckbox value="#{item.saleable}" />
</p:column>
<p:column width="15" >
<p:commandButton id="id_saveRowButton" icon="ui-icon-disk"
title="Save" action="#{itemManagerBean.saveItem(item)}"/>
</p:column>
</p:dataTable>
</h:form>
@ManagedBean(name=“itemManagerBean”)
@视域
公共类ItemManagerBean实现可序列化{
...
公共数组列表getAllItemsForUser(){
List List=ecf.findByPartyId(user.getPartyId());
ArrayList itemList=新的ArrayList(列表);
返回(项目列表);
}
...
公共字符串保存项(项){
System.out.println(item.toString());
ecf.更新记录(项目);
返回(空);
}
}
//项目类别
公共类项目{
私有BigInteger项目ID;
私有字符串名称;
priave boolean saleable;//数据库列不为null
//接球手和接球手
}
//小脸
您需要在ItemManagerBean
中创建selectedItem
属性,并在用户单击命令按钮时更新其值:
在ItemManagerBean中
private Item selectedItem;
// getter and setter
在xhtml页面中
<p:column width="15" >
<p:commandButton id="id_saveRowButton" icon="ui-icon-disk"
title="Save" action="#{itemManagerBean.saveItem}">
<f:setPropertyActionListener value="#{item}" target="#{itemManagerBean.selectedItem}" />
</p:commandButton>
</p:column>
(请注意,您不需要通过saveItem
方法传递item
。在托管bean中修改saveItem
,使其与selectedItem
一起工作,而不是接受输入项)
链接: