如何在JSF中正确使用commandButton?

时间:2019-01-28 14:28:43

标签: jsf primefaces xhtml

在以下情况下,我遇到了一些问题。我有一个页面,其中有多个字段,并且需要使用自动完成组件添加多个项目。例如,我有一个结帐对象,我需要向表和其他字段(如日期等)中添加具有数量的其他产品,这是我面临的一些问题:

<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”。

0 个答案:

没有答案