ModelAndView的視圖解析器如何配置

小樊
82
2024-10-12 13:03:17

ModelAndView 的視圖解析器可以通過(guò)多種方式進(jìn)行配置,具體取決于你使用的視圖解析器類(lèi)型。以下是一些常見(jiàn)的視圖解析器及其配置方法:

1. InternalResourceViewResolver

InternalResourceViewResolver 是 Spring MVC 內(nèi)置的視圖解析器,用于解析基于 classpath 的視圖名稱(chēng)。

配置示例:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

在這個(gè)示例中,視圖名稱(chēng)會(huì)被解析為 /WEB-INF/views/ 目錄下的文件,文件擴(kuò)展名為 .jsp。

2. ThymeleafViewResolver

Thymeleaf 是一個(gè)現(xiàn)代的服務(wù)器端 Java 模板引擎,可以與 Spring MVC無(wú)縫集成。

配置示例:

<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>

在這個(gè)示例中,Thymeleaf 視圖名稱(chēng)會(huì)被解析為 /WEB-INF/templates/ 目錄下的文件,文件擴(kuò)展名為 .html。

3. FreeMarkerViewResolver

FreeMarker 是一個(gè)流行的模板引擎,也可以與 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>

在這個(gè)示例中,F(xiàn)reeMarker 視圖名稱(chēng)會(huì)被解析為 /WEB-INF/views/ 目錄下的文件,文件擴(kuò)展名為 .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>

在這個(gè)示例中,JSP 視圖名稱(chēng)會(huì)被解析為 /WEB-INF/views/ 目錄下的文件,文件擴(kuò)展名為 .jsp。

請(qǐng)注意,這些示例都是基于 XML 配置的。如果你使用 Java 配置,你可以使用相應(yīng)的注解來(lái)配置視圖解析器。例如,對(duì)于 InternalResourceViewResolver,你可以使用 @Bean 注解來(lái)定義它:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

0