0
私はthymeleafを学びたい小さなプロジェクトに取り組んでいます。 私は3つのテーブルを持っています。id、外部キーなどの割り当てID、外部キーとしてのIDとプロジェクトID、およびIDとプロジェクト名を含むプロジェクトが含まれています。Thymeleaf別のテーブルの値に基づいてあるテーブルの列を表示するにはどうすればいいですか
タイムテーブルをhtmlで表示する必要がありますが、割り当てID列の代わりにプロジェクト名を表示する必要があります。
私はすでに必要な列を呼び出す私のサービスクラスでselectを持っていますが、どのようにtimetablesでそれを探すのではなく、その列を読むようにthymeleafに伝えることができます。ここで
は私のコードhtmlです
<table class="table table-bordered">
<thead>
<tr>
<th>id</th>
<th>assignment</th>
<th>date</th>
<th>number of hours</th>
</tr>
</thead>
<tbody>
<tr th:each = "timetable: ${timetables}">
<td th:text="${timetable.timetableId}">45</td>
<td th:text="${timetable.assignmentId}">vasi</td>
<td th:text="${timetable.date}">1 ian</td>
<td th:text="${timetable.hoursWorked}">3000</td>
</tr>
</tbody>
</table>
Serviceクラス
@Autowired
JdbcTemplate template;
public List<Timetable> findAll(String loginname) {
String sql = " SELECT timetables.timetableId, timetables.assignmentId, timetables.date, timetables.hoursWorked, users.username, projects.projectName FROM timetables INNER join assignments on assignments.assignmentId = timetables.assignmentId INNER JOIN users on users.userId = assignments.userId " +
"INNER JOIN projects on assignments.projectId = projects.projectId where username= ?";
RowMapper<Timetable> rm = new RowMapper<Timetable>() {
@Override
public Timetable mapRow(ResultSet resultSet, int i) throws SQLException {
Timetable timetable = new Timetable(resultSet.getInt("timetableId"),
resultSet.getInt("assignmentId"),
resultSet.getDate("date"),
resultSet.getInt("hoursWorked"));
return timetable;
}
};
return template.query(sql, rm, loginname);
}
コントローラ
@Autowired
TimetableService service;
@Autowired
AssignmentsService serv;
@RequestMapping(value = {"/Timetable"}, method = RequestMethod.GET)
public String index(Model md){
org.springframework.security.core.Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String loginname = auth.getName();
md.addAttribute("timetables", service.findAll(loginname));
return "Timetable";
}
作品完璧にプロジェクト名を追加するには
そして、すでにとmapRowでそれを持っていない場合はHTMLページで、タイムテーブルクラスでPROJECTNAMEを追加
を次。どうもありがとうございました。 上記の他にも、私のモデルクラスにはprojectsという名前のフィールド、getterとsetter、そしてassignmentIdの代わりにstringプロジェクトを使用するコンストラクタが必要でした。 – Adi
@Adi Gladそれはうまくいきました! –