У меня есть шрифт. Я заполняю его из базы данных. Одним из полей является логическое значение, представленное флажком. Я хочу, чтобы, если я установил или снял флажок, я могу сохранить это изменение обратно в базу данных.JSF Невозможно сохранить изменения в строках данных в базе данных
Я попытался передать текущее значение строки управляемому компоненту для сохранения, но новое значение этого флажка не отражается в текущем объекте строки. Как я могу получить изменение в текущем объекте строки, чтобы я мог успешно сохранить изменения в БД?
Вот что я делаю сейчас ... Я попытался предоставить только то, что нужно. Если это слишком много информации или слишком мало, дайте мне знать. Благодарю.
@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>