这是在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。
感谢。
答案 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”
为什么不使用注释?