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

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

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

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

Q&A

解決済

1回答

342閲覧

Springbootでビジネスロジックにおける精査でエラーが発生した場合、該当の項目の背景色を変更したい

kojiroy

総合スコア12

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

0グッド

0クリップ

投稿2023/12/09 10:26

実現したいこと

  • Springbootで、ControllerやService層のビジネスロジックにおける精査でエラーが発生した場合、該当の項目の背景色を変更したい

前提

Strtusでは、Formのバリデーションだけでなく、ビジネスロジックの精査処理でエラーが発生した場合に、ActionErrorsにプロパティ名を引数で渡せば、該当の項目がerrorStyleClassに従い背景色が変わると思っています。

同様のことをSpringbootで実現したいです。Formのバリデーションではなく、ビジネスロジックでの精査で、該当の項目の背景色を変更したいです。
(form:inputタグを想定しています)

タグを拡張しないとできないとか、エラー処理の作り込みが必要など、本件実現したことがある方いればアドバイスいただければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

色々やり方はあると思いますが、例えばrejectValueで作ることができます。

java

1@PostMapping("/form") 2public String post(@Validated Product product, BindingResult result) { 3 if (result.hasErrors()) { 4 return "form"; 5 } 6 // validateで何らかの精査処理が走る場合 7 if (businessLogic.validate(product)) { 8 result.rejectValue("content", "error.content", "ビジネスロジックのエラーです"); 9 return "form"; 10 } 11 return "index"; 12}

HTML側は、th:errorclassを使うとエラー時に(classが追加され)背景色を変更できます。

html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <style> 7 .is-invalid { 8 background-color: #fee2e2; 9 } 10 .is-invalid-text { 11 color: red; 12 } 13 </style> 14</head> 15<body> 16 <form th:action="@{/form}" th:object="${product}" method="post"> 17 <input type="text" th:field="*{content}" th:errorclass="is-invalid"> 18 <button>登録</button> 19 <br> 20 <small th:errors="*{content}" class="is-invalid-text"></small> 21 </form> 22</body> 23</html>

■その他

以下は、その他のサンプルとなります。例えば、アノテーションを自作する場合は「@interface バリデーション名」で作成できます。

java

1@Getter 2@Setter 3@Entity 4public class Product { 5 @Id 6 @GeneratedValue 7 private Long id; 8 9 @NotBlank 10 //@Custom 自作バリデーションを作る場合 11 private String content; 12} 13 14@Retention(RetentionPolicy.RUNTIME) 15@Target(ElementType.FIELD) 16@Constraint(validatedBy = CustomValidator.class) 17public @interface Custom { 18 // 省略

投稿2023/12/09 14:36

編集2023/12/09 15:39
KT001

総合スコア618

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

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

kojiroy

2023/12/10 08:32

アドバイスありがとうございます。 こちらの前提の提示がよくなかった点ではありますが、Thymeleafではなくjspでやれればと思います。(諸般の都合…) 単純なspringのタグ(form:inputなど)でやろうとすると、「エラー時にclassを追加する」拡張タグを作るしかないですかね…。 ※rejectValue+th:errorclass はそういうのもあるのかと勉強になりました。ありがとうございます。
KT001

2023/12/10 13:22 編集

jspの場合は、cssErrorClassでエラー時にclassを追加することができます。詳しくは、以下のドキュメントのcssErrorClassの部分をご参照ください。 https://terasolunaorg.github.io/guideline/current/ja/ArchitectureInDetail/WebApplicationDetail/Validation.html#validation-basic-validation jsp時のコードは、以下のようになります。 <form:input path="content" cssErrorClass="is-invalid" /> ※Spring Boot公式がJSPを推奨していないので、可能であればどこかのタイミングでThymeleafなどに移行した方が宜しいかとは思いますが…私自身も大規模案件で、諸般の都合がいっぱいあったので厳しいのが理解できます…。
kojiroy

2023/12/11 02:40

ありがとうございます。いただいたアドバイスをもとにrejectValueとcssErrorClassの合わせ技で想定の挙動となりました。大変助かりました。 ※そうですね、Thymeleafだともっといい点もあるかとおもいますが、なかなか諸般の都合が・・・。
KT001

2023/12/11 11:32

Thymeleaf時とJSP時の違いなど、Spring Bootは色々な書き方があるので動いて良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問