JSF - 如何防止在更新

时间:2016-04-18 13:41:47

标签: jsf jsf-2.2

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

我正在跟踪正在运行的应用程序,我看到currentCustomer的字段已经填充了来自db的数据,只是因为调用getCustomer…而被空字符串立即覆盖(返回)按下AJAX按钮后立即调用"")和setCustomer…(编写"")方法。

我认为我目前解决问题的方法存在根本性的问题所以我很感激任何关于如何正确处理这种情况的建议。

我有这样的形式:

阶travellers.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}"/>

和像这样的支持bean:

orderBean.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);
}

1 个答案:

答案 0 :(得分:0)

我理解这样的问题就像这个表格带来了DB的一些值然后它将所有值重置为空,如果是这样的话尝试

  

过程= “@形式”

在您的按钮中可能会解决您的问题,虽然在您的页面中使用如此多的进程并不是一个好方法,但我认为对您的情况来说没问题。