Spring MVC中的ThrowawayController如何从请求中获取参数?

时间:2009-09-02 06:55:55

标签: java spring spring-mvc

这是在Spring MVC中使用ThrowawayController的一个例子:

public class DisplayCourseController 
    implements ThrowawayController {
  private Integer id;
  public void setId(Integer id) { this.id = id; }   
  public ModelAndView execute() throws Exception {
    Course course = courseService.getCourse(id);                       
    return new ModelAndView("courseDetail", "course", course);   
  }
  private CourseService courseService;
  public void setCourseService(CourseService courseService) {
    this.courseService = courseService;
  }
}

在xml文件中声明:

<bean id="displayCourseController"
    class="com.spring.mvc.DisplayCourseController"
    singleton="false">
  <property name="courseService">
    <ref bean="courseService"/>
  </property>
</bean>

这两段代码都未指定如何识别请求中的参数 id 。谁能告诉我它是如何工作的?

EDITED: 我认为逻辑可能会使用 getParameterNames() getParameter()来检索所有参数,并使用java反射来获取相应的setter。

感谢。

2 个答案:

答案 0 :(得分:1)

我实际上必须搜索这个类,所以如果你还在使用它,请注意它在Spring 3中不存在。

来自ThrowawayControllerHandlerAdapter Javadoc

  

此实现绑定请求   ThrowawayController的参数   实例,然后调用它执行。

所以,我会说处理程序适配器使用标准属性编辑器将命名请求参数转换为setX方法中指定的类型。

您可以通过在上面的示例代码中传递一个无效的数字作为请求中的id来确认这一点,例如:foo?id = not-a-number并查看异常被抛出的位置。

答案 1 :(得分:1)

从Spring3.1.x开始,可能会删除界面“org.springframework.web.servlet.mvc.throwaway.ThrowawayController”

为什么不使用注释?