springmvc 同時配置thymeleaf和jsp兩種模板引擎__js

來源:互聯網
上載者:User
問題說明

在我的意識中,是主導使用thymeleaf的,因為我一直想知道springboot推薦的它到底有什麼好。在普通的springboot項目中,直接引入thymeleaf的依賴包就可以進行視圖解析了,而在一般的spring項目中還需要我們進行一些手動的配置,於是就出現了這個問題,怎麼整合多個模板引擎在一起。 解決方案 引入thymeleaf的依賴

        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->        <dependency>            <groupId>org.thymeleaf</groupId>            <artifactId>thymeleaf</artifactId>            <version>${thymeleaf.version}</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring3 -->        <dependency>            <groupId>org.thymeleaf</groupId>            <artifactId>thymeleaf-spring3</artifactId>            <version>${thymeleaf.version}</version>        </dependency>

thymeleaf的版本2和3都行,3功能更完善一點。
另外tymeleaf-spring3 or thymeleaf-spring4也隨意使用。
2. 配置springmvc視圖解析
關鍵是這一步,這一步網上的版本就多了。我大概分析了一下主要有下面兩種情況: 第一種情況jsp頁面和html頁面分別是位於不同的視圖檔案夾下面 第二種情況兩種頁面同時存在同一個視圖檔案夾中

先來看第一種情況的配置:
這裡可以參考thymeleaf官方的一個寵物商店的配置地址是
thymeleaf官方配置例子

下面是咱們的例子:

    <bean id="templateResolver"          class="org.thymeleaf.spring3.templateresolver.SpringResourceTemplateResolver">        <property name="prefix" value="WEB-INF/" />        <property name="suffix" value=".html" />        <property name="templateMode" value="HTML5" />        <property name="cacheable" value="false" />        <property name="characterEncoding" value="UTF-8"/>    </bean>    <bean id="templateEngine"          class="org.thymeleaf.spring3.SpringTemplateEngine">        <property name="templateResolver" ref="templateResolver" />    </bean>    <!--  配置多個視圖解析-->    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">        <property name="viewResolvers">            <list>                <!--used thymeleaf  -->                <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">                    <property name="characterEncoding" value="UTF-8"/>                    <property name="templateEngine" ref="templateEngine" />                    <property name="viewNames" value="html/*"/>                    <property name="order" value="2" />                </bean>                <!-- used jsp -->                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">                    <property name="prefix" value="/WEB-INF/"/>                    <property name="suffix" value=".jsp"/>                    <property name="viewNames" value="jsp/*"/>                    <property name="order" value="1" />                </bean>            </list>        </property>    </bean>

關鍵點:
<property name="prefix" value="/WEB-INF/"/>
<property name="viewNames" value="/*"/>

接下來說第二種情況的配置:

也就是由第一種配置延伸過來的,prefix的值相同了

<bean id="templateResolver"          class="org.thymeleaf.spring3.templateresolver.SpringResourceTemplateResolver">        <property name="prefix" value="WEB-INF/views/" />        <property name="templateMode" value="HTML5" />        <property name="cacheable" value="false" />        <property name="characterEncoding" value="UTF-8"/>    </bean>    <bean id="templateEngine"          class="org.thymeleaf.spring3.SpringTemplateEngine">        <property name="templateResolver" ref="templateResolver" />    </bean>    <!--  配置多個視圖解析-->    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">        <property name="viewResolvers">            <list>                <!--used thymeleaf  -->                <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">                    <property name="characterEncoding" value="UTF-8"/>                    <property name="templateEngine" ref="templateEngine" />                    <property name="viewNames" value="*.html" />                    <property name="order" value="1" />                </bean>                <!-- used jsp -->                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">                    <property name="prefix" value="/WEB-INF/views/"/>                    <property name="viewNames" value="*.jsp"/>                    <property name="order" value="2" />                </bean>            </list>        </property>    </bean>

不同的地方在這裡:
<property name="viewNames" value="*.html"/>
<property name="viewNames" value="*.jsp"/>

到這裡還沒完,需要我們在controller層如何返回。

第一種情況return "jsp/abc" || return "thymeleaf/abc"
第二種情況return "abc.jsp" || return "abc.html"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.