Spring MVC - Binding to multiple commands

需求:扩展spring 3 mvc表单绑定功能,使其能绑定多个command对象,且绑定对象规则按照 model.name 格式进行bind。
描述:spring 3 mvc现有表单绑定功能推荐用 form标签,且仅支持一个 command对象直接的绑定,
<form:form commandName="someCommand1"> 
</form:form>
绑定规则默认约定按照model的属性名进行匹配,现有的功能存在至少2个弊端:1)不支持多个command 对象绑定;2)如果要绑定除了command外的对象或者参数,必须不能重复现有绑定command 对象中的属性名。
解决思路有2个,本人推荐第2个:
1、form表单中input的name还是按照model.name格式,在 controller中form表单提交方法的签名为:method(HttpServerRequest request,……),在方法中遍历request中的参数,手工的bind。实现手工bind可以写个单独的工具类,用BeanWrapper wrapper = new BeanWrapperImpl(obj)来解决,具体的请参照ss3ex 中的工具类。
2、构建一个实现FactoryBean接口的超类,取名为CommandFactoryBean。以分页需求为例,学生信息分页,表单有2个对象,一个是page对象,另一个是学生对象。CommandFactoryBean类中包含2个属性,一是page类,第二个属性就是通过FactoryBean接口方法getObject()得到的绑定的model类(这里为学生类)。前台from表单:
<form:form commandName="commandFactoryBean"> 
<form:input path="page.pageNo"/>
<form:input path="student.name"/>
</form:form>
后台controller中方法签名就是
method(……,CommandFactoryBean commandFactoryBean)

肯定还有其他的解决办法,看到的请直接留言。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值