在以下情况下,我遇到了一些问题。我有一个页面,其中有多个字段,并且需要使用自动完成组件添加多个项目。例如,我有一个结帐对象,我需要向表和其他字段(如日期等)中添加具有数量的其他产品,这是我面临的一些问题:
<p:panelGrid columns="3" layout="grid"
styleClass="ui-panelgrid-blank form-group">
<h:panelGroup styleClass="md-inputfield">
<p:autoComplete id="acEquipment"
value="#{createOrderSelectionView.equipment}"
completeMethod="#{createOrderSelectionView.completeTextEquipment}"
style="margin-bottom:10px;" var="equipment"
itemLabel="#{equipment}" converter="equipmentConverter"
itemValue="#{equipment.pk}" forceSelection="true">
</p:autoComplete>
</h:panelGroup>
<h:panelGroup styleClass="md-inputfield">
<p:inputText value="#{createOrderSelectionView.quantity}"
required="true"
requiredMessage="Inserisci la quantità del materiale"
label="Quantità" />
<p:outputLabel value="Quantità" />
</h:panelGroup>
<h:panelGroup styleClass="md-inputfield">
<p:commandButton type="reset" value="Aggiungi materiale"
icon="ui-icon-plus"
style="width:auto;margin-bottom:10px; float:left;"
action="#{createOrderSelectionView.addEquipmentQuantity()}"
update="equipmentQuantityTable">
<f:ajax execute="@this" render="@form" />
</p:commandButton>
</h:panelGroup>
</p:panelGrid>
此panelGrid在一个大窗体内,我正在使用它与命令按钮一起保存对象。 Bean具有以下方法:
public void addEquipmentQuantity() {
System.out.println(productionOrder.getEquipmentQuantities().size());
if (quantity != null) {
productionOrder.getEquipmentQuantities().add(new EquipmentQuantity(quantity, equipment));
this.equipment = null;
this.quantity = null;
}
System.out.println(productionOrder.getEquipmentQuantities().size());
}
public void onRemoveEquipmentQuantity(EquipmentQuantity equipmentQuantity) {
productionOrder.getEquipmentQuantities().remove(equipmentQuantity);
}
问题在于该对象未插入到数据库中。我在哪里错了?
编辑
该问题未与所报告的重复。该问题已由我解决,并在注释的帮助下得以解决,这是由于会话使用不正确引起的。对于其他,请使用@ViewScoped和表的render =“ @ Id”。