场景
在机票预定的业务场景中,jsp页面需要记录航班相关信息和联系人相关信息还要记录多个乘客的相关信息。这就需要在向后端传值时某乘客属性为多个对象。
实现
所有的数据封装成一个Moel类,其中航班信息和联系人信息等单独的信息作为model的属性,乘客信息作为model的list属性,每一个list又是一个对象,对应的属性即为乘客的属性。
JSP页面代码
jsp页面通过表单提交,所对应的name属性要与后台接收时的model的属性相对应。
示例代码:
注:
上面代码中hidden属性对应的是航班相关的信息,最下面的联系人属性就是对应的一个联系人属性,中间就是对应的多个乘客的信息。
通过js控制循环填写list信息。
比如第一个乘客的姓名对应的是:
name="bookInfoList[0].chineseName"
那么第二个乘客对应的就是:
name="bookInfoList[1].chineseName"
当然chineseName要与后台乘客对象的姓名属性相一致。
对应Model代码
public class PiaoHouGJBookInfoPayViewModel {
private String contactAreaCode;
private String contactAreaMobile;
private String email; //邮箱地址
private String coupon; //优惠券编号
private String cabin; //舱位编号
private String from;
private String to;
private String leaveDate;
private String leaveTime;
private String seqno;
private String contactName;
private String price;
private Integer passOrderId;
List bookInfoList;
....
}
中间省略get和set方法。
其中上面的属性与航班和联系人等唯一的属性想对应,最后面的list就与乘客信息相对应。
乘客model代码
public class PiaoHouFrontBookInfoFormViewModel {
private String chineseName;
private String lastName;
private String firstName;
private String checkboxSwitchName;
private String cardType;
private String cardCode;
private String mobileAreaCode;
private String mobile;
private String sex;
private String passengerType;
private String ticketUserId;
private String savePass;
private String email;
private String chineseLastName; //中文姓
private String chineseFirstName; //中文名
private String nation;//国籍
private String country2; //国家二字码
private Date birthday;
private Date validDate;
....
}
中间省略get和set方法。
后台Controller代码
@ResponseBody
@RequestMapping(value = "/GJbookPayValidate", method = RequestMethod.POST)
public Map GJbookPayValidate(PiaoHouGJBookInfoPayViewModel model){
try {
//登录账户验证部分
BaseSubjectModel bsm = SubjectUtil.validate(this.getClass(),loginType,"机票预订失败:");
if(!bsm.isFlag()) {
return bsm.getJsonResult();
}
//业务部分
return this.service.getGJBookPayValidateJson(model,bsm);
}
catch (Exception e) {
LogService.getInstance(this).debug("机票预订失败:"+Status.UNKNOWN_SESSION_EXCEPTION.toString()+e.getMessage());
return JsonResult.jsonWsReturn(Status.ERROR.getCode(), Status.ERROR.getDescriptionZh(), Status.ERROR.getCode());
}
}
效果
前端页面效果
后台断点调试效果
获取的bookInfoList就是用来存放乘客信息的
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net