spring MVC之创建带有参数化视图的控制器
----------
在创建控制器时, 你不想将视图名称硬编码在控制器中,而是把它参数化, 以便在Bean配置文件中进行指定。ParameterizableViewController是AbstractController的一个子类,其中定义了viewName属性及其getter和setter方法。对于不需要任何处理逻辑,只为用户呈现视图控制器,可以直接使用这个控制器类,或者扩展这个控制器类来继承viewName属性。
假设有一个非常简单的控制器,其目的只是为了呈现about视图。可以声明一个ParameterizableViewController类型的控制器,并指定viewName属性为about。
<bean id="aboutController" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="about"/> </bean>
在保存参数化的视图时,如果想要给控制器添加一些处理逻辑,可以让控制器类扩展ParameterizableViewController。下面的AboutController接受email属性,并将它包含在模型中。
package com.apress.springrecipes.court.web;
...
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
public class AboutController extends ParameterixableViewController{
private String email;
public void setEmail(String email){
this.email = email;
}
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response)throws Exception{
return new ModelAndView(getViewName(),"email",email);
}
}
由于AboutController扩展了ParameterizableViewController,它也有一个viewName属性可以注入。
<bean id="aboutController" class="com.apress.springrecipes.court.web.AboutController"> <property name="viewName" value="about"/> <property name="email" value="reservation@court.com"/> </bean>