2016-12-25 1 views
1

私はビュー用にJSPを使用する既存のSpring起動アプリケーションを持っています。私は視界技術をThymeleafに徐々に移行したいと考えています。JSPとThymeleaf用の2つのテンプレートリゾルバを設定する

JSPビューリゾルバがapplication.propertiesに設定されている:

spring.mvc.view.prefix=/WEB-INF/views/ 
spring.mvc.view.suffix=.jsp 

JSPは次の場所にあります。

src/main/resources/META-INF/resources/WEB-INF/views/ 

がために、Thymeleafための第二のビューリゾルバを追加することが可能ですJSPとして存在しないビューは?したがって、ビューが要求されたときに、アプリケーションは両方のビューリゾルバを試行します。

編集

私も成功せず、次のように構成して試してみました:

@Bean 
public InternalResourceViewResolver jspViewResolver() { 
    final InternalResourceViewResolver vr = new InternalResourceViewResolver(); 
    vr.setPrefix("/META-INF/resources/WEB-INF/views/"); 
    vr.setSuffix(".jsp"); 
    vr.setViewClass(JstlView.class); 
    vr.setOrder(1); 
    return vr; 
} 

@Bean 
public TemplateResolver templateResolver() { 
    final ServletContextTemplateResolver tr = new ServletContextTemplateResolver(); 
    tr.setPrefix("templates/th/"); 
    tr.setSuffix(".html"); 
    tr.setTemplateMode("HTML5"); 
    return tr; 
} 

@Bean 
public SpringTemplateEngine templateEngine() { 
    final SpringTemplateEngine te = new SpringTemplateEngine(); 
    // te.addTemplateResolver(jspViewResolver()); 
    te.setTemplateResolver(templateResolver()); 
    te.setMessageSource(databaseMessageSource); 
    return te; 
} 

@Bean 
public ViewResolver viewResolver() { 
    final ThymeleafViewResolver vr = new ThymeleafViewResolver(); 
    vr.setTemplateEngine(templateEngine()); 
    vr.setOrder(2); 
    return vr; 
} 

答えて

0

をあなたはJavaのコンフィグを通してそれを構成するために試してみるかもしれません。

package com.example; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.JstlView; 
import org.thymeleaf.spring4.view.ThymeleafViewResolver; 

@SpringBootApplication 
public class Application extends WebMvcConfigurerAdapter{ 

    @Override 
    public void configureViewResolvers(ViewResolverRegistry registry) { 
     registry.viewResolver(new ThymeleafViewResolver()); 

     InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver(); 
     internalResourceViewResolver.setViewClass(JstlView.class); 
     internalResourceViewResolver.setPrefix("/WEB-INF/views"); 
     internalResourceViewResolver.setSuffix(".jsp"); 
     registry.viewResolver(internalResourceViewResolver); 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

InternalResourceViewResolverは最後になるはずです。これは、「org.thymeleaf.exceptions.TemplateInputException:エラー解消テンプレート "につながるSO

  1. How to use multiple ViewResolvers in Spring?
  2. Spring MVC with multiple view resolvers
+0

また別の有用な答えテンプレートが存在しない場合があります自宅"、または"home"を解決することができるjsp view-respoverである2番目のオプションを試していないかのように、設定されたテンプレートリゾルバによってアクセスできない可能性があります。あなたの例では、ビューリゾルバの順序を何の効果もなく設定しようとしました。 – yglodt

+0

@yglodt両方のリゾルバで特定のケースに接頭辞と接尾辞を設定しますか? – marknorkin

+0

更新された質問をチェックしてください。 – yglodt

関連する問題