81. Spring 提供了丰富的控制器层次,方便根据实际需求选择实现或继承那一种控制器。不像 Struts 和 WebWork 比较平坦的 Action 层次。比如 ThowawayController/MultiActionController/SimpleFormController 等。 (P254)
82. 继承 AbstractController 要覆盖的方法是 handleRequestInternal(request,response);new ModelAndView("counrseList","courses",courses) 第一个参数是 view 的逻辑名,第二第三个参数是传 递给 view 的名称/数值对,那要向 View 传递多个参数就还是要用 request.setAttribute() 了。 (P256)
83. 当控制器需要根据参数执行工作时,如参数绑定到业务对象,插入验证器的钩子,应该继承 AbstractCommandController,你的 Controller 中需要覆盖 handle(request,response,Object command,BindException) 方法,这个方法还需带一个控制器命令参数,并且需要在构造函数中指定命令 类,如
public MyController(){ setCommandClass(MyCommand.class);} public MyController(){ setCommandClass(MyCommand.class);}
在使用 command 对象与 Struts 中的 ActionForm是一样的,也是通过处理方法来传递的,在 handle 方 法中用 MyCommand myCommand = (MyCommand)command。
命令对象只是一个 POJO,功能相当于 Struts 的 ActionForm,能匹配接受请求中的参数,它不需要 在 Spring 的配置文件中配置。留下一个疑问:要是 AbstractCommandController 能在 Spring 的配置 文件中注入可能要好些,相当于 Struts 的 Action 的 FormBean 也是在 struts-config.xml 配置给 Action 的
自己试了一下,可以通过配置给 commandClass 一个全限类名字符串注册 class 属性,Spring 提供 了相应的属性编辑器(P258)
<property name="commandClass"> <value>com.unmi.MyCommand</value></property><property name="commandClass"> <value>com.unmi.MyCommand</value></property>
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
, 控制器
, 参数
, 方法
, 配置
一个
,以便于您获取更多的相关知识。