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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

Thymeleaf

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

Spring Boot

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

Q&A

解決済

1回答

1263閲覧

Spring Boot + thymeleaf でDBから取得した値を一覧表に表示したい

kikirara

総合スコア4

Java

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

Thymeleaf

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

Spring Boot

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

0グッド

0クリップ

投稿2023/03/03 02:24

編集2023/03/07 13:23

実現したいこと

Spring Boot + thymeleaf でDBから取得した値を一覧表に表示したいです。
DBからJava側ではデータが取得できているのにHTMLには表示されません。
何度も変数名等が間違っていないか確認しましたが、自分では見つけられず途方に暮れています。
お気付きのところ、間違っているところをご教授頂きたいです。
よろしくお願いいたします。

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

Exception evaluating SpringEL expression: "permitDataList" 「permitDataList」はDTOで定義しているので正しいと思っています。

該当のソースコード

HTML(一部抜粋)

1<form th:action="@{/tablePermit}" th:object="${permitListParam}" th:method="post"> 2<table> 3 <tr> 4 <td> 5 <input type="image" th:formaction="@{/search}" id ="submit" name="submit" src="images/btn_kensaku.gif" alt="検索" class="imgBtn"/> 6 </td> 7 </tr> 8</table> 9<table cellpadding="0" cellspacing="0" style="width:440px"> 10 <col style="width:30px"/> 11 <col style="width:130px"/> 12 <col style="width:280px"/> 13 <tr th:each="permitList, st : *{permitDataList}"> 14 <td class="left"><input type="checkbox" th:field="${permitList.possible}" ></input></td> 15 <td class="left"> 16 <span th:text="${permitList.tableid}" ></span> 17 <input type="hidden" th:field="*{permitDataList[__${st.index}__].tableid}"></input> 18 </td> 19 <td class="left"><span th:text="${permitList.table_name}" ></span></td> 20 </td> 21 </tr> 22</table> 23</form>

Java(@Controller)

1@Controller 2 3public class TablePermitController implements WebMvcConfigurer { 4 @Autowired 5 PermitService permitService; 6 7 @GetMapping(value = "/search") 8 @RequestMapping(value = "/search", method = RequestMethod.POST) 9 public String search(@ModelAttribute("permitListParam") PermitListParam permitList, Model model) { 10 PermitListParam permitListParam = permitService.findPermit(); 11 model.addAttribute("permitListParam", permitListParam); 12 return "tablePermit"; 13 } 14}

Java(@Entity)

1@Entity 2@Data 3public class TablePermit implements Serializable{ 4 public boolean possible; 5 @Id 6 public String tableid; 7 public String table_name; 8}

Java(DTO)

1@Data 2public class PermitDataDto implements Serializable{ 3 public boolean possible; 4 @Id 5 public String tableid; 6 public String table_name; 7}

Java(DTO)

1@Data 2public class PermitListParam implements Serializable { 3 @Valid 4 public List<PermitDataDto> permitDataList; 5}

Java(@Service)

1@Service 2public class PermitService { 3 4 @Autowired 5 PermitRepository permitRepository; 6 7 public PermitListParam findPermit() { 8 List<TablePermit> permitList = permitRepository.findPermit("G000", "A", "M"); 9 PermitListParam permitListParam = new PermitListParam(); 10 List<PermitDataDto> list = new ArrayList<PermitDataDto>(); 11 // エンティティを画面データに詰め替える 12 for(TablePermit permit : permitList) { 13 PermitDataDto data = new PermitDataDto(); 14 data.setPossible(permit.isPossible()); 15 data.setTableid(permit.getTableid()); 16 data.setTable_name(permit.getTable_name()); 17 list.add(data); 18 } 19 permitListParam.setPermitDataList(list); 20 return permitListParam; 21 } 22}

Java(@Repository)

1@Repository 2public interface PermitRepository extends JpaRepository<TablePermit, String> { 3 4 @Query(value = "SELECT possible, p.tableid AS tableid, table_name FROM usys_permit p JOIN usys_table t ON p.tableid = t.tableid " + 5 "WHERE p.groupid = :groupid AND p.permit = :permit AND t.table_kbn = :table_kbn ORDER BY t.no", nativeQuery = true) 6 List<TablePermit> findPermit(@Param("groupid") String groupid, @Param("permit") String permit, @Param("table_kbn") String table_kbn); 7}

イタリックテキスト

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

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

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

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

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

dameo

2023/03/04 03:33 編集

ThymeleafとControllerの接続を確認したいのならそれだけで確認して出来ないところだけを聞くようにしましょう。 // ThymeleafExampleApplication.java import java.util.Arrays; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @SpringBootApplication @Controller public class ThymeleafExampleApplication { @GetMapping("/") public String home(Model model) { model.addAttribute("hoge", Arrays.asList("ふー", "ばー")); return "home"; } public static void main(String[] args) { SpringApplication.run(ThymeleafExampleApplication.class, args); } } <!-- home.html --> <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <table> <tr th:each="item : ${hoge}"> <td><span th:text="${item}"></span></td> </tr> </table> </body> </html> # 確認コマンドライン $ wget -q -O - 'http://localhost:8080/' <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <table> <tr> <td><span>ふー</span></td> </tr> <tr> <td><span>ばー</span></td> </tr> </table> </body> $
kikirara

2023/03/07 02:44

コメント頂きありがとうございます。 質問したソースの中でご教授頂きたいです。 初心者のため、どうぞよろしくお願いいたします。
dameo

2023/03/07 02:58

初心者ならコメントのソースで考えて下さい。
guest

回答1

0

自己解決

<input type="checkbox" th:field="${permitList.possible}" ></input>
と記述していたところを
<input type="checkbox" th:field="*{permitDataList[__${st.index}__].possible}" ></input>
とすることで解決しました。

投稿2023/03/07 04:23

kikirara

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問