首页 > 解决方案 > 使用 ModelDriven Interceptor 请求参数未映射到 struts 2 中的模型类

问题描述

在 JSP 中将表单提交给 struts 2 动作类时,ModelDriven 对象没有被正确创建。只有一些字段被填充而不是其他字段。

下面是使用 post 方法提交给 Action 类的参数:

orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.vendor.vendorName: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.vendor.number: 10065
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.vendor.vendorDeptNumber: 0
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.masterVendor.vendorName: 10064
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.masterVendor.number: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.masterVendor.vendorDeptNumber: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityName: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityNumber: 5023
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityBUID: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.isValid: true

模型对象:

import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Logger;


public class OrderDaysForm {



    private Map<String, OrderDayDisplay> orderDaysMap = null;


    public Map<String, OrderDayDisplay> getOrderDaysMap() {
        return orderDaysMap;
    }
    public void setOrderDaysMap(Map<String, OrderDayDisplay> orderDaysMap) 
    {
        this.orderDaysMap = orderDaysMap;
    }


}
public class OrderDayDisplay implements Exportable, java.io.Serializable {
    private static final long serialVersionUID = 20070403092401L;

    private Map<String, OrderDayRecord> orderDayMap;

    public Map<String, OrderDayRecord> getOrderDayMap() {
        return orderDayMap;
    }
    public void setOrderDayMap(Map<String, OrderDayRecord> m) {
        this.orderDayMap = m;
    }



}
public class OrderDayRecord extends OrderDay implements Exportable {

    private static final long serialVersionUID = 20070403105701L;

}
public class OrderDay implements java.io.Serializable {

    private static final long serialVersionUID = 20070202142501L;
    private VendorFacility facility;

}

OrderDayRecord 类中未填充与以下请求参数对应的 VendorFacility 对象:

orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityName: 
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityNumber: 5023
orderDaysMap['10065A5023'].orderDayMap['100655023299912319901566237468850'].facility.facility.facilityBUID: 

标签: jsphashmapstruts2model-driven

解决方案


推荐阅读