流れとして、
1.HTMLで[リストを取得]ボタンを押す
2.ControllerクラスからModelクラスを呼び出す(引数なし)
3.ModelクラスDaoクラスを呼び出す
4.DaoクラスでDBから全リストを取得する
5.Modelクラスで、4で取得したリストをArrayList<Bean型>に順に格納し、ArrayListをControllerに返す
6.Controllerクラスで、5から返ってきたArrayListをmodel.addAttributeする
7.HTMLで、th:eachで6を取得しth:textで中身を取得
というようにしようとしています。
↓ソース
HTML:EmpList.html
Controller:MastaController.java
Model:MastaForm.java
Bean:Bean.java
Dao:Dao.java
HTML
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>全従業員</title> 6</head> 7<body> 8 9<h2>従業員マスタメンテナンス</h2> 10 11 12<form action="main"> 13<input type="submit" name="listget" value="リストを取得" ><br><br> 14</form> 15<tr th:each="getlist:${getlist}"> 16<form action="/main"> 17 従業員No.<td th:text="${getlist.getNom()}"></td> 18 名前:<td th:text="${getlist.getName()}"></td> 19 <input type="hidden"th:value="${getlist.getNom()}" id="nom" name="nom"> 20<input type="submit" value="詳細" name="select"><br><br> 21</form> 22</tr> 23 24</body> 25</html>
JAVA
1 2import java.util.ArrayList; 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.ui.Model; 6import org.springframework.web.bind.annotation.GetMapping; 7import org.springframework.web.bind.annotation.RequestMapping; 8 9@RequestMapping("/main") 10@Controller 11public class MastaController { 12 13 @Autowired 14 private MastaForm mastaForm; 15 @GetMapping 16 public String main() { 17 return "EmpList"; 18 } 19 20 @RequestMapping(params="listget") 21 public String Emp(Model model) { 22 ArrayList<Bean> aList = mastaForm.mastaform(); 23 model.addAttribute("getlist",aList); 24 return "EmpList"; 25 } 26}
JAVA
1import java.util.ArrayList; 2import java.util.List; 3import java.util.Map; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Service; 7 8@Service 9public class MastaForm { 10 @Autowired 11 private Dao dao; 12 13 public ArrayList<Bean> mastaform() { 14 15 List<Map<String,Object>> All = dao.selectAll(); 16 17 Bean bean = new Bean(); 18 ArrayList<Bean> aList = new ArrayList<Bean>(); 19 20 for(int i = 0; i < All.size(); i++) { 21 Map<String, Object> list = All.get(i); 22 int nom =(int) list.get("nom"); 23 String name = (String) list.get("name"); 24 String kana = (String) list.get("kana"); 25 String tell = (String) list.get("tell"); 26 String mail = (String) list.get("mail"); 27 int year = (int) list.get("year"); 28 int month = (int) list.get("month"); 29 int day = (int) list.get("day"); 30 int age = (int) list.get("age"); 31 int code = (int) list.get("code"); 32 String add1 = (String) list.get("add1"); 33 String add2 = (String) list.get("add2"); 34 35 bean.setNom(nom); 36 bean.setName(name); 37 bean.setKana(kana); 38 bean.setTell(tell); 39 bean.setMail(mail); 40 bean.setYear(year); 41 bean.setMonth(month); 42 bean.setDay(day); 43 bean.setAge(age); 44 bean.setCode(code); 45 bean.setAdd1(add1); 46 bean.setAdd2(add2); 47 48 aList.add(bean); 49 50 } 51 return aList; 52 } 53} 54
JAVA
1package mastalist; 2 3import javax.validation.constraints.NotBlank; 4 5 6public class Bean { 7 8 @NotBlank 9 int nom; 10 @NotBlank 11 String name; 12 @NotBlank 13 String kana; 14 @NotBlank 15 private String tell; 16 @NotBlank 17 private String mail; 18 @NotBlank 19 private int year; 20 @NotBlank 21 private int month; 22 @NotBlank 23 private int day; 24 @NotBlank 25 private int age; 26 @NotBlank 27 private int code; 28 @NotBlank 29 private String add1; 30 @NotBlank 31 private String add2; 32 33 public int getNom() { 34 return nom; 35 } 36 public void setNom(int nom) { 37 this.nom = nom; 38 } 39 public String getName() { 40 return name; 41 } 42 public void setName(String name) { 43 this.name = name; 44 } 45 public String getKana() { 46 return kana; 47 } 48 public void setKana(String kana) { 49 this.kana = kana; 50 } 51 public String getTell() { 52 return tell; 53 } 54 public void setTell(String tell) { 55 this.tell = tell; 56 } 57 public String getMail() { 58 return mail; 59 } 60 public void setMail(String mail) { 61 this.mail = mail; 62 } 63 public int getYear() { 64 return year; 65 } 66 public void setYear(int year) { 67 this.year = year; 68 } 69 public int getMonth() { 70 return month; 71 } 72 public void setMonth(int month) { 73 this.month = month; 74 } 75 public int getDay() { 76 return day; 77 } 78 public void setDay(int day) { 79 this.day = day; 80 } 81 public int getAge() { 82 return age; 83 } 84 public void setAge(int age) { 85 this.age = age; 86 } 87 public int getCode() { 88 return code; 89 } 90 public void setCode(int code) { 91 this.code = code; 92 } 93 public String getAdd1() { 94 return add1; 95 } 96 public void setAdd1(String add1) { 97 this.add1 = add1; 98 } 99 public String getAdd2() { 100 return add2; 101 } 102 public void setAdd2(String add2) { 103 this.add2 = add2; 104 } 105}
JAVA
1import java.util.List; 2import java.util.Map; 3 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.jdbc.core.JdbcTemplate; 6import org.springframework.stereotype.Repository; 7 8@Repository 9public class Dao { 10 11 @Autowired 12 JdbcTemplate jdbc = new JdbcTemplate(); 13 14 public List<Map<String, Object>> selectAll() { 15 List<Map<String, Object>> selectAll = jdbc.queryForList("SELECT * FROM masta_list"); 16 System.out.println(selectAll); 17 return selectAll; 18 } 19}
しかし実行すると、下画像のようにDBの最後の行のみがデータの数分(今は6件)表示されます。(従業員No.は4,5,8,9,10,11が登録されています)
これをちゃんと順番にデータ通り表示したいです。
どうかお力添えをお願い致します。
試行錯誤の履歴:
・HTMLの受け取り方→th:eachでリストマップ取得、そこからth:withでマップを取得、${map.key}の形で取り出そうとしたがエラー。
・Controllerクラスで取得した値をSystem.out.printlnで確認すると、データの最終行のみが6件入っていることを確認。しかしModelクラスでは問題なく全データを取得出来ていた。
→ということはmodelクラスのaListへの値の格納がおかしい?
・Modelクラスの変数Allから取得したlistをさらにfor文で回して値を処理してみようとするも何をしているのかわからず沼にハマる。
回答2件
あなたの回答
tips
プレビュー