前提・実現したいこと
二つのテーブルを取得・結合したデータを
タイムリーフとEL式で表示したい
使用しているのはSpringBootです。
発生している問題・エラーメッセージ
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "searchDetas.id" (template: "page/search" - line 61, col 13)
該当のソースコード
下記コードでDBから表を取得(デバックの様子から見ると表は取得できている。
Java
1public Object SearchUserQuery(@NonNull String id, String name, String kana) { 2 Object result = dsl.select(USER.ID,USER.NAME,USER.KANA,USERDETAIL.BIRTH,USERDETAIL.CLUB) 3 .from(USER.join(USERDETAIL).on(USERDETAIL.ID.equal(USER.ID))) 4 .where( 5 USER.ID.like(id + "%")) 6 .and(USER.NAME.like(name + "%")) 7 .and(USER.KANA.like(kana + "%")) 8 .fetch(); 9 return result; 10 }
ここで、データがあるかないかの分岐
java
1Object u = Srep.SearchUserQuery(id, name, kana); 2 if (null != u) { 3 return u; 4 } 5 else{ 6 return "nodeta"; 7 }
コントーローラーで受け取り、HTMLへ受け渡し
java
1Object searchData = search.searchUser(form.getId(), form.getName(), form.getKana()); 2 model.addAttribute("searchData", searchData); 3 4 model.addAttribute("SearchForm", form); 5 return SEAECH_PAGE;
受け取ったデータを展開したいが、エラー。。。
HTML
1<body> 2 <div class="wrap"> 3 <h2>社員情報管理</h2> 4 <h3>※前方一致で検索します</h3> 5 <main class="bg-gray-light container"> 6 <div class="alert alert-danger" role="alert" th:if="${msg != null}"> 7 <p th:text="${msg}"> 8 </div> 9 <div class="card card-container"> 10 <form action="#"th:action="@{/search}" th:object="${SearchForm}" method="post"> 11 <div class="text-center bg-white"> 12 <div class="spaceheight"> 13 <span>ID</span> 14 <input type="text" th:field="*{id}" class="form-control" value="test" th:errorclass="is-invalid" autofocus> 15 </div> 16 <div class="spaceheight"> 17 <span>名前</span> 18 <input type="text" th:field="*{name}" class="form-control" value="test" th:errorclass="is-invalid" autofocus> 19 </div> 20 <div class="spaceheight"> 21 <span>カナ</span> 22 <input type="text" th:field="*{kana}" class="form-control" value="test" th:errorclass="is-invalid" autofocus> 23 </div> 24 <div class="pt10"> 25 <div class="push-btn"> 26 <button id="loginButton" name="searchUser"type="submit" class="btn btn-success">検索</button> 27 </div> 28 <div class="push-btn"> 29 <button id="newAcountButton" name="newAccount" type="submit" class="btn btn-success">新規登録</button> 30 </div> 31 </div> 32 </div> 33 </form> 34 </div> 35 </main> 36 <div th:if="${searchDeta != null }"> 37 <table id="tbl" border="1"> 38 <thead> 39 <tr class="searchOutputTable"> 40 <th >ID</th> 41 <th >名前</th> 42 <th >カナ</th> 43 <th >生年月日</th> 44 <th >委員会</th> 45 <th >操作</th> 46 </tr> 47 </thead> 48 <tr th:each="searchDetas : ${searchDeta}"> 49 <td th:text="${searchDetas.id}"></td> 50 <td th:text="${searchDetas.name}"></td> 51 <td th:text="${searchDetas.kana}"></td> 52 <td th:text="${searchDetas.birth}"></td> 53 <td th:text="${searchDetas.club}"></td> 54 <td> 55 <button id="searchButton" type="submit" class="btn btn-success">検索</button> 56 <button id="deleteButton" type="submit" class="btn btn-success">削除</button> 57 </td> 58 </tr> 59 </table> 60 </div> 61 </div> 62</body> 63</html>
試したこと
EL式等の構文をいじったりしてみたが駄目でした。。
可能性としては、テーブルごとにBeanを別クラスで定義しています。
受け取りをobject型でしているので
参照できないのか?と思ったりしていますが
両クラスを参照する方法も思いつかずに、途方に暮れております。。
お助けいただけますと幸いです。。
java
1 2/** 3 * Spring-data-jdbcで使用するエンティティ定義<br> 4 * USERテーブル定義 5 * @version 1.0.0 : 2020/05/13 新規作成 6 */ 7@Data 8public class User implements Serializable { 9 private static final long serialVersionUID = 1L; 10 @Id 11 private String id; 12 private String pass; 13 private String name; 14 private String kana; 15} 16
java
1@Data 2public abstract class UserDetail implements Serializable { 3 private static final long serialVersionUID = 1L; 4 @Id 5 private String no; 6 private String id; 7 private String birth; 8 private String club; 9}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー