阅读量:0
ModelAndView
的视图解析器可以通过多种方式进行配置,具体取决于你使用的视图解析器类型。以下是一些常见的视图解析器及其配置方法:
1. InternalResourceViewResolver
InternalResourceViewResolver
是 Spring MVC 内置的视图解析器,用于解析基于 classpath
的视图名称。
配置示例:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
在这个示例中,视图名称会被解析为 /WEB-INF/views/
目录下的文件,文件扩展名为 .jsp
。
2. ThymeleafViewResolver
Thymeleaf 是一个现代的服务器端 Java 模板引擎,可以与 Spring MVC无缝集成。
配置示例:
<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/"/> <property name="suffix" value=".html"/> <property name="templateMode" value="HTML"/> </bean> <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver"/> </bean> <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine"/> </bean>
在这个示例中,Thymeleaf 视图名称会被解析为 /WEB-INF/templates/
目录下的文件,文件扩展名为 .html
。
3. FreeMarkerViewResolver
FreeMarker 是一个流行的模板引擎,也可以与 Spring MVC集成。
配置示例:
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views/"/> </bean> <bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="cache" value="true"/> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".ftl"/> </bean>
在这个示例中,FreeMarker 视图名称会被解析为 /WEB-INF/views/
目录下的文件,文件扩展名为 .ftl
。
4. JSPViewResolver
JSP(JavaServer Pages)也可以作为视图解析器使用。
配置示例:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
在这个示例中,JSP 视图名称会被解析为 /WEB-INF/views/
目录下的文件,文件扩展名为 .jsp
。
请注意,这些示例都是基于 XML 配置的。如果你使用 Java 配置,你可以使用相应的注解来配置视图解析器。例如,对于 InternalResourceViewResolver
,你可以使用 @Bean
注解来定义它:
@Configuration public class WebConfig implements WebMvcConfigurer { @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } }