OGNL表达式 模型驱动封装数据 获取null的问题

来源:互联网 发布:java redis作用 编辑:程序博客网 时间:2024/06/05 18:14

JavaBean: Visit类

public class Visit implements Serializable {// ...其他属性//private Long visit_cust_id;// 客户idprivate Customer customer;//private Long visit_user_id;//负责人idprivate User user;}

Customer类

public class Customer implements Serializable {// ...其他属性private String cust_name; //'客户名称(公司名称)'}

前端:

<INPUT type="text" name="customer.cust_name"/>

目的

将前端的文本框数据封装到customer对象中 Action类

public class VisitAction extends BaseAction implements ModelDriven<Visit> {private Visit visit=new Visit();@Overridepublic Visit getModel() {return visit;}public String Xxx(){    //打印 封装的数据cust_name值}}

由于驱动模型中Visit对象包含了customer对象,所以封装前端的customer.cust_name时,不需要在Action类中提供customer私有属性和set方法,否则会导致customer对象一直为null

正确做法
public class VisitAction extends BaseAction implements ModelDriven<Visit> {private Visit visit=new Visit();@Overridepublic Visit getModel() {return visit;}public String Xxx(){    //打印 封装的数据cust_name值    Customer customer=visit.getCustomer;    System.out.println(customer.getCust_name);}}

或者

public class VisitAction extends BaseAction implements ModelDriven<Visit> {private Visit visit=new Visit();@Overridepublic Visit getModel() {return visit;}private Customer customer;public String Xxx(){    //打印 封装的数据cust_name值    customer=visit.getCustomer;    System.out.println(customer.getCust_name);}}
错误做法
public class VisitAction extends BaseAction implements ModelDriven<Visit> {private Visit visit=new Visit();@Overridepublic Visit getModel() {return visit;}private Customer customer;public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}public String Xxx(){    //打印 封装的数据cust_name值    // System.out.println(customer.getCust_name);    //报错,空指针异常}}
public class VisitAction extends BaseAction implements ModelDriven<Visit> {private Visit visit=new Visit();@Overridepublic Visit getModel() {return visit;}private Customer customer=visit.getCustomer;public String Xxx(){    //打印 封装的数据cust_name值    // System.out.println(customer.getCust_name);    //报错,空指针异常}}
1 0