|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-04-06
一般只见到用SimpleFormController绑定command bean。
请问MultiActionController如何绑定command? 谁能给一个例子? 十分感谢! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-08-28
|
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
multiactioncontroller可以一个Controller对应多个方法,这样就很方便,但又不能绑定。
commandController又不能对应多个方法。 这是不是要折腾人? |
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
Spring MVC的MultiActionController比其它框架的DispatchAction之类的都要来得方便。
MultiActionController可以绑定任意的command,举个例子: [code:1] public class TestController extends MultiActionController { public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse response,Account account) { } public ModelAndView insertProduct(HttpServletRequest request,HttpServletResponse response,Product product) { } } [/code:1] 注意看上面的方法签名,第三个参数就是你要绑定的command,不需要做任何配置,方法签名里第三个参数指定是什么对象,MultiActionController就会给你绑定什么对象。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
谢谢您的提示!我有些不好意思,还是不会。
请问JSP和bean.xml怎么写呢? 或者哪里有这样的例子? 谢谢! |
|
| 返回顶楼 | |
|
最后更新时间:2007-01-30
基本的Spring MVC配置你自己应该会吧?我就说一下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中参数的值绑定到方法签名的第三个对象中。 例子我倒是没有,最直接的办法就是去看一下MultiActionController的源代码,非常简单拉,一看就明白了。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
奥妙就在MultiActionController的invokeNamedMethod方法里,我挖出来简单说一下:
[code:1] protected final ModelAndView invokeNamedMethod(String methodName, HttpServletRequest request, HttpServletResponse response) throws Exception { // If last parameter isn't of HttpSession type, it's a command. // 在这里,Spring会判断你的请求方法里面第三个参数的类型。如果第三个参数类型不是HttpSession,就认为是要绑定的command。 if (method.getParameterTypes().length >= 3 && !method.getParameterTypes()[method.getParameterTypes().length - 1].equals(HttpSession.class)) { // 根据类型利用反射产生Command对象 Object command = newCommandObject(method.getParameterTypes()[method.getParameterTypes().length - 1]); params.add(command); // 绑定command对象 bind(request, command); } // 最后通过反射去调用你的方法,也就是说,在执行你的方法时,command已 // 经帮你绑定好拉,你直接用就可以了。 return (ModelAndView) method.invoke(this.delegate, params.toArray(new Object[params.size()])); } [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
谢谢!搞定了。:)
|
|
| 返回顶楼 | |
|
最后更新时间:2006-04-07
|
|
| 返回顶楼 | |
|
最后更新时间:2006-04-06
不过在他的源码里有说明 -“--靠第3个参数来绑定比较缺乏灵活性,还是建议你调用它的bind()函数来绑定”。
当然,如果没有要特殊处理的属性,比如Book的Category属性,CoverImage属性,也没啥校验,可以简单的用第三个参数来绑定,又少了一行代码,善哉善哉。 |
|
| 返回顶楼 | |






