需求:有如下一个表单,包含两个对象的属性,name以“对象名.属性名”命名,传到后台。
<form class="form-horizontal" role="form" action="updateCompanyResult.do" method="post">
<div class="alert alert-success" role="alert">
<strong>公司信息 —— </strong>基本信息
</div>
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">公司中文全称</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="请输入公司中文全称" value="${company.companyInfoBase.gszwqc}" name="companyInfoBase.gszwqc">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">英文名称及缩写</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="请输入英文名称及缩写" value="${company.companyInfoBase.ywmcjsx}" name="companyInfoBase.ywmcjsx">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">证券简称</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.zqjc}" name="companyInfoBase.zqjc">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">证券代码</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.zqdm}" name="companyInfoBase.zqdm">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">法定代表人</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.fddlr}" name="companyInfoBase.fddlr">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">注册地址</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.zcdz}" name="companyInfoBase.zcdz">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">办公地址</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.bgdz}" name="companyInfoBase.bgdz">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">会计师事务所</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.kjssws}" name="companyInfoBase.kjssws">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">签字注册会计师姓名</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.qzzckjsxm}" name="companyInfoBase.qzzckjsxm">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">会计师事务所办公地址</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoBase.kjsswsbgdz}" name="companyInfoBase.kjsswsbgdz">
</div>
</div>
<div class="alert alert-success" role="alert">
<strong>公司信息 —— </strong>联系方式
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">董事会秘书或信息披露负责人</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.dshmshxxplfzr}" name="companyInfoContact.dshmshxxplfzr">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">电话</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.tel}" name="companyInfoContact.tel">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">传真</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.fax}" name="companyInfoContact.fax">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">电子邮箱</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.email}" name="companyInfoContact.email">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">公司网址</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.url}" name="companyInfoContact.url">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">联系地址及邮政编码</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.lxdzjyzbm}" name="companyInfoContact.lxdzjyzbm">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">公司指定信息披露平台的网址</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.gszdxxplptdwz}" name="companyInfoContact.gszdxxplptdwz">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">公司年度报告备置地</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="${company.companyInfoContact.gsndbgbzd}" name="companyInfoContact.gsndbgbzd">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">保存</button>
</div>
</div>
</form>
直接使用对象接收是接收不到值的。需要加入如下代码
// 绑定变量名字和属性,参数封装进类
@InitBinder("companyInfoBase")
public void initBinderUser(WebDataBinder binder) {
binder.setFieldDefaultPrefix("companyInfoBase.");
}
// 绑定变量名字和属性,参数封装进类
@InitBinder("companyInfoContact")
public void initBinderAddr(WebDataBinder binder) {
binder.setFieldDefaultPrefix("companyInfoContact.");
}
controller方法体:
@RequestMapping("updateCompanyResult.do")
public ModelAndView updateCompanyResult(@ModelAttribute CompanyInfoBase companyInfoBase,@ModelAttribute CompanyInfoContact companyInfoContact,ModelAndView model){
model.setViewName("jsps/pdf/companyResult");
return model;
}