-1

jasperとthymeleafの両方のプロジェクトで試しましたが、共存できません.JSPを使用したいと思っていますので、Spring-boot-starter-thymeleafはパッケージを実行することができます。ジャスパーとタイメレフの両方が共存できるように解決策を探しています。 jasperとthymeleafの両方が共存するservlet-context.xml(Mixing thymeleaf and jsp files in Spring Boot)を使用する人がいたら、私はstackoverflowの解決策を得ました。しかし、私がspring-boot-starter-webを使っている場合、それらの属性をpom.xmlに含める方法が私の要求です。Springブートアプリケーションのthymeleafファイルとjasperファイルの共存

答えて

0

私は、Springブート内の組み込みjar buildからHTMLページとJSPページの両方を実行できました。しかし、コマンドプロンプトでJarファイルをコピーして独立して実行したい場合は、Jarコンテンツに含まれないJSPページのフォルダ構造をコピーする必要があります.pomファイルを少し変更してjarファイルに追加できるようにする必要がありますそれに対する外部コンテンツ。

STEP 1:作成したソースフォルダのsrc /メイン/リソースのもと、プロジェクト構造とファイルの作成

:追加ThymeleafとJSPの依存関係 は、あなたのpom.xmlファイル

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 

STEP 2への依存関係の下に追加しますフォルダテンプレートを作成し、その下にサブフォルダthymeleafを作成します。そして

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Hello</title> 
</head> 
<body> 
    THYMELEAF PAGE: <p th:text="${name}"></p> 
</body> 
</html> 

サブフォルダビューを作成するのsrc /メイン/ webappの/ WEB-INFの下にhtmlファイルをsample.html(言う)を作成します。ビューの下のJSPファイル、sample.jsp(例えば)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Hello</title> 
</head> 
<body> 
    JSP PAGE: Hello ${name} 
</body> 
</html> 

STEP 3作成:あなたのapplication.propertiesで内部ビュー解決のためのthymeleafビュー名およびJSP構成を設定します。

#tomcat-connection settings 
spring.datasource.tomcat.initialSize=20 
spring.datasource.tomcat.max-active=25 
#Jasper and thymeleaf configaration 
spring.view.prefix= /WEB-INF/ 
spring.view.suffix= .jsp 
spring.view.view-names= views 
spring.thymeleaf.view-names= thymeleaf 
#Embedded Tomcat server 
server.port = 8080 
#Enable Debug 
debug=true 
management.security.enabled=false 

STEP 4:ThymeleafとJSPページを提供するためのコントローラを作成します。

package com.example.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.RequestParam; 

@Controller 
public class TestController { 

    @RequestMapping(value="/jasper", method=RequestMethod.GET) 
    public String newjasper(Map<String, Object> m, String name){ 
     //System.out.print("-- INSIDE JSP CONTROLER ------"); 
     m.put("name", name); 
     return "views/sample"; 
    } 

    @RequestMapping(value="/thymeleaf", method=RequestMethod.GET) 
    public String newthymeleaf(Map<String, Object> m, String name){ 
     //System.out.print("-- INSIDE HTML CONTROLER ------"); 
     m.put("name", name); 
     return "thymeleaf/sample"; 
    } 

} 

STEP 5:あなたがJSPのビューの解像度のためのコンフィギュレーションクラスSpringConfig.class(言う)を作成するために必要なことがいくつかの例をページ。しかし、オプションで、私は設定ファイルでそれを使用しません。

import org.springframework.web.servlet.view.JstlView; 

@Configuration 
public class SpringConfig { 
@Value("${spring.view.prefix}") 
private String prefix; 

@Value("${spring.view.suffix}") 
private String suffix; 

@Value("${spring.view.view-names}") 
private String viewNames; 

@Bean 
InternalResourceViewResolver jspViewResolver() { 
    final InternalResourceViewResolver viewResolver = new 
    InternalResourceViewResolver(); 
    viewResolver.setPrefix(prefix); 
    viewResolver.setSuffix(suffix); 
    viewResolver.setViewClass(JstlView.class); 
    viewResolver.setViewNames(viewNames); 
    return viewResolver; 
} 
} 

ステップ6:jspとhtmlの両方のアプリケーションをテストします。

ブラウザでこのURLにヒットしたとき:http://localhost:8080/thymeleaf?name=rohit。これにより、パラメータ名がページの中心にあり、このURLでsample.htmlファイルが開きます。http://localhost:8080/jasper?name=rohitは、パラメータ名がcenterのsample.jspページを開きます。

0

viewresover javadocから。

は、コントローラによって返さ ビュー名がこのリゾルバ かによって解決されるかどうかを決定するために適用される名前パターンのセットを指定します。例えば-forいくつかのビューリゾルバを構成するアプリケーションで

、ThymeleafとJSP + JSTLレガシーpages-ためのもう一つのための1つ 、この プロパティは このビューリゾルバときバネによってビューを解決するために検討される場合に確立代わりにチェーン内の次のリゾルバ に注文に応じて尋ねてください。

指定されたビュー名のパターンは完全なビュー名とすることができるが、 も*ワイルドカードを使用することができます:「インデックスを」、「 USER_」、「管理者/ *」など。また

ことに注意してくださいこれらのビュー名のパターンは、ビュー名に 任意の接頭辞や接尾辞を適用する前にチェックされているので、彼らは これらを含めるべきではありません。通常そのため、あなたは注文/ *の代わり /WEB-INF/templates/orders/*.htmlを指定します。

このビューリゾルバで扱うことができないfact-で、ビュー-patternsの名前を指定します。

これらのパターンは、 setViewNames(String [])と同じ形式で指定できますが、除外リストとして機能します。 viewResolver.setViewNames(viewNames)。

関連する問題