JSF – 如何防止字段在更新时被覆盖


这是

流程中的一个步骤,我想检查是否有给定idNumber客户的记录。在这种情况下,我想用数据库中的数据填充其余字段。

正在跟踪正在运行的应用程序,我看到currentCustomer的字段已被来自数据库的数据填充,但由于调用getCustomer…(返回""(和setCustomer…(写入""(方法,立即被空字符串覆盖按下AJAX按钮后立即调用。

我认为我目前解决问题的方法存在根本性问题,因此我将不胜感激有关如何正确处理这种情况的任何建议。

我有这样的表格:

订单旅行者.xml

<h:outputLabel for="idNumber" value="ID: "/>
<h:inputText id="idNumber" value=“#{orderBean.customerIdNumber}" required="true"/>
<a4j:commandButton value="update" reRender="surname"/>
<br/>
<h:outputLabel for="firstName" value="First name: "/>
<h:inputText id="firstName" value="#{orderBean.customerFirstName}"/>
<br/>
<h:outputLabel for="surname" value="Surname: "/>
<h:inputText id="surname" value="#{orderBean.customerSurname}"/>

并像这样支持豆子:

点豆.java

@Named
@FlowScoped("order")
public class orderBean implements Serializable {
private Customer currentCustomer = new Customer();
private List<Customer> customers = new ArrayList<>();
private Customer knownCustomer(String id) {
    …
    Criteria cr = session.createCriteria(Customer.class);
    cr.add(Restrictions.eq("idNumber",id));
    List<Customer> results = cr.list();
    if (results.isEmpty()) return currentCustomer;
    else return results.get(0);
}
public String getCustomerIdNumber() {
    return currentCustomer.getIdNumber();
}
public void setCustomerIdNumber(String idNumber) {
    currentCustomer = knownCustomer(idNumber);
    currentCustomer.setIdNumber(idNumber);
}
public String getCustomerFirstName() {
    return currentCustomer.getFirstName();
}
public void setCustomerFirstName(String firstName) {
    currentCustomer.setFirstName(firstName);
}
public String getCustomerSurname() {
    return currentCustomer.getSurname();
}
public void setCustomerSurname(String surname) {
    currentCustomer.setSurname(surname);
}

我理解像这种形式这样的问题是从数据库带来一些值,如果是这种情况,它会将所有值重置为空

尝试

进程="@form">

在您的按钮中可能会解决您的问题,尽管在您的页面中使用这么多进程不是好方法,但我认为对于您的情况来说没关系。

最新更新