質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2004閲覧

SpringBootのサーバエラー500(セッション?)

退会済みユーザー

退会済みユーザー

総合スコア0

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/05/27 08:45

編集2020/05/27 13:00

前提・実現したいこと

SpringSecurityでログイン認証を行った後、トップ画面(top.html)から編集画面(edit)に遷移できず、500のエラーが出てしまう。

発生している問題・エラーメッセージ

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/edit.html]")] with root cause

一度ログインできていたのですが、遷移先のリンクをhtmlに追記した辺りから急にエラーが出るようになりました。

該当のソースコード

各部関係していそうなところを抜粋しています。

SecurityConfig

1@Override 2 protected void configure(HttpSecurity http) throws Exception { 3 http 4 // セキュリティ認証管理 5 .authorizeRequests() 6 .antMatchers("/login", "/signup") // 認証なしで許可するパス 7 .permitAll() 8 .anyRequest() 9 .authenticated() 10 .and() 11 // 認証ページ処理 12 .formLogin() 13 .loginPage("/login") 14 .loginProcessingUrl("/login") 15 .usernameParameter("email") 16 .passwordParameter("password") 17 .failureUrl("/login?error") 18 .defaultSuccessUrl("/top") 19 .permitAll() 20 .and() 21 // ログアウト処理 22 .logout() 23 .logoutSuccessUrl("/login") 24 .deleteCookies("JSESSIONID", "SESSION") 25 .invalidateHttpSession(true) 26 .permitAll(); 27 }

MvcConfig

1@Configuration 2public class MvcConfig implements WebMvcConfigurer { 3 4 public void addViewControllers(ViewControllerRegistry registry) { 5 registry.addViewController("/login").setViewName("login"); 6 registry.addViewController("/signup").setViewName("signup"); 7 registry.addViewController("/top").setViewName("top"); 8 registry.addViewController("/").setViewName("top"); 9       registry.addViewController("edit").setViewName("edit"); 10 } 11}

TopController

1@RestController 2@RequestMapping(value="top") 3public class TopController { 4 @GetMapping 5 public ModelAndView topPage(@AuthenticationPrincipal LoginUser loginUser, ModelAndView mav) { 6 mav.addObject("loginUser", loginUser); 7 return mav; 8 } 9}

tophtml

1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" 3 xmlns:th="https://www.thymeleaf.org" 4 xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 5<head> 6<title>人材管理システム</title> 7</head> 8<body> 9 <h1 th:inline>人材管理システム</h1> 10     <a th:href="@{/edit}">編集</a> 11 <form th:action="@{/logout}" method="post"> 12 <input type="submit" value="ログアウト" /> 13 </form> 14</body> 15</html>

試したこと

MvcConfigのtopを設定している箇所とControllerのvalue値に/を入れたり入れなかったりしましたがうまくいかず。
htmlで追記した部分もコメントアウトしてみましたが駄目でした。
セッションが残っているのかとも思ったのですが、chromeのシークレットでもエラーとなります。
edit.htmlはtop.htmlのvalueの値が変わっているのみです。

補足情報(FW/ツールのバージョンなど)

Eclipse
SpringBoot(gradle)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

th:inlineの書き方が不十分なためにエラーが起きているようです。

html

1<h1 th:inline>人材管理システム</h1>

ご質問の例では、特にテキストインライン処理を行っていないようなのでth:inlineを削除するか

html

1<h1>人材管理システム</h1>

テキストインライン処理を行うなら下記のように直す必要があります。

html

1<h1 th:inline="text">人材管理システム</h1>

テキストインライン処理(th:inline)については、12.2 テキストインライン処理をご覧ください。

投稿2020/05/27 09:28

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/27 13:00

すみません。そちらは修正いたしました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問