MultiActionController绑定command
dlpower:
一般只见到用SimpleFormController绑定command bean。
请问MultiActionController如何绑定command?
swiminthesea:
Spring MVC的MultiActionController比其它框架的DispatchAction之类的都要来得方便。
MultiActionController可以绑定任意的command,举个例子:
- public class TestController extends MultiActionController
- {
- public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse response,Account account)
- {
- }
- public ModelAndView insertProduct(HttpServletRequest request,HttpServletResponse response,Product product)
- {
- }
- }
注意看上面的方法签名,第三个参数就是你要绑定的command,不需要做任何配置,方法签名里第三个参数指定是什么对象,MultiActionController就会给你绑定什么对象。
首先在bean.xml里面:
- <bean id="methodNameResolver"
- class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
- <property name="paramName"><value>method</value>
- </property>
- <property name="defaultMethodName"><value>view</value>
- </property>
- </bean>
- <bean name="/jsp/test.do" class="org.nightwalker.spaces.web.controller.TestController">
- <property name="methodNameResolver">
- <ref local="methodNameResolver"/>
- </property>
- </bean>
配置呢就这么简单。methodNameResolver指定了调用MultiActionController中方法的方式,例如,如果在你的MultiActionController中有如下方法:
public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse,Account account)
{
}
那么要调用这个方法,你的JSP页面的请求URL就应该这样写:
- <form action="test.do?method=insertAccount">
- </form>
至于绑定什么command和JSP是没有关系的。你在MultiActionController中的方法签名第三个参数是什么对象,Spring就会把request中参数的值绑定到方法签名的第三个对象中。
江南白衣:
不过在他的源码里有说明 -“--靠第3个参数来绑定比较缺乏灵活性,还是建议你调用它的bind()函数来绑定”。
当然,如果没有要特殊处理的属性,比如Book的Category属性,CoverImage属性,也没啥校验,可以简单的用第三个参数来绑定,又少了一行代码,善哉善哉。
发表评论
- 浏览: 20922 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
web.xml不认<taglib>解决 ...
谢谢啦 呵呵呵
-- by mucang -
web.xml不认<taglib>解决 ...
不错啊兄弟
-- by charm_888 -
web.xml不认<taglib>解决 ...
找的就是这个,谢谢了
-- by chxkyy -
web.xml不认<taglib>解决 ...
不错,很受用了...
-- by linux.sir -
用Eclipse3.2+MyEclipse5. ...
结果出不来啊。老兄.最后一步. 从菜单中选择“Run->Run as->JUni ...
-- by wangqinglin






评论排行榜