`
guoyiqi
  • 浏览: 1043980 次
社区版块
存档分类
最新评论

MultiActionController绑定command

阅读更多

dlpower:

一般只见到用SimpleFormController绑定command bean。
请问MultiActionController如何绑定command?

swiminthesea:

Spring MVC的MultiActionController比其它框架的DispatchAction之类的都要来得方便。
MultiActionController可以绑定任意的command,举个例子:

java 代码
  1. public class TestController extends MultiActionController      
  2. {      
  3. public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse response,Account account)      
  4. {      
  5. }      
  6.      
  7. public ModelAndView insertProduct(HttpServletRequest request,HttpServletResponse response,Product product)      
  8. {      
  9. }      
  10.             
  11. }  

 注意看上面的方法签名,第三个参数就是你要绑定的command,不需要做任何配置,方法签名里第三个参数指定是什么对象,MultiActionController就会给你绑定什么对象。

 

首先在bean.xml里面:

xml 代码
  1. <bean id="methodNameResolver"    
  2. class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">    
  3. <property name="paramName"><value>method</value>    
  4. </property>    
  5. <property name="defaultMethodName"><value>view</value>    
  6. </property>    
  7. </bean>  
  8.   
  9. <bean name="/jsp/test.do" class="org.nightwalker.spaces.web.controller.TestController">    
  10. <property name="methodNameResolver">    
  11. <ref local="methodNameResolver"/>    
  12. </property>    
  13. </bean>  
  14.   

配置呢就这么简单。methodNameResolver指定了调用MultiActionController中方法的方式,例如,如果在你的MultiActionController中有如下方法:
public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse,Account account)
{
}

那么要调用这个方法,你的JSP页面的请求URL就应该这样写:

xml 代码
  1. <form action="test.do?method=insertAccount">    
  2. </form>  

至于绑定什么command和JSP是没有关系的。你在MultiActionController中的方法签名第三个参数是什么对象,Spring就会把request中参数的值绑定到方法签名的第三个对象中。

江南白衣:

不过在他的源码里有说明 -“--靠第3个参数来绑定比较缺乏灵活性,还是建议你调用它的bind()函数来绑定”。

当然,如果没有要特殊处理的属性,比如Book的Category属性,CoverImage属性,也没啥校验,可以简单的用第三个参数来绑定,又少了一行代码,善哉善哉。

分享到:
评论

相关推荐

    毕设外文文献翻译-Spring的webMVC构架模式 (3).docx

    此外,Spring还引入了命令对象(Command Object)的概念,这些对象可以绑定HTTP表单数据,无需实现特定接口,增强了代码的可复用性。 3. **数据绑定与验证** Spring的数据绑定机制允许将HTTP请求参数自动绑定到...

    springmvc 学习笔记

    在表单处理方面,Spring MVC 支持数据绑定,能将表单参数自动绑定到 Command 或 Form 对象中。如果表单字段与对象属性相匹配,Spring 将调用相应的 `set` 方法将参数注入对象。此外,还可以使用属性编辑器...

    开源框架 Spring Gossip

    认识 Spring 来... AbstractController MultiActionController 与 ParameterMethodNameResolver MultiActionController 与 PropertiesMethodNameResolver ParameterizableViewController ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与...

    spring chm文档

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    Spring 2.0 开发参考手册

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    Spring中文帮助文档

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

    Spring API

    13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...

Global site tag (gtag.js) - Google Analytics