我在jdbcTemplate中使用了一个select语句。我正在尝试选择名字和姓氏,并将它们显示在html页面上,但我遇到了错误。我在HTml页面上得到的错误代码是">";列计数不正确:应为1,实际为2
public List<String> getAllUserNames() {
List<String> usernameList = new ArrayList<>();
usernameList.addAll(jdbcTemplate.queryForList("SELECT FirstName,Surname from paitents",String.class));
return usernameList;
}
Html文件
<tr th:each="user : ${users}">
<a href="#" th:text="${user} + ${user.Surname}" ></a> <br>
<!-- <td th:text="${user}"> </td> <br>-->
</tr>
</body>
您正在构建一个String列表,然后尝试在列表中插入一个复杂的对象类型。这里有两个解决方案;第一种方法是使用复杂类型并使用该列表。一个例子可能如下:
public List<User> findAllUsers() {
String sql = "SELECT FirstName,Surname from paitents";
return jdbcTemplate.query(sql,
(rs, rowNum) ->
new User(
rs.getString("FirstName"),
rs.getString("Surname")
));
}
然后在百里香代码中:
<tr th:each="user : ${users}">
<a href="#" th:text="${user.FirstName} + ${user.Surname}" ></a> <br>
</tr>
另一个解决方案是快速修复,您可以使用sql技巧来做到这一点:
public List<String> getAllUserNames() {
List<String> usernameList = new ArrayList<>();
usernameList.addAll(jdbcTemplate.queryForList("SELECT CONCAT(FirstName, ' ', Surname) AS FullName from paitents",String.class));
return usernameList;
}
你应该把这个列表放在你的控制器方法的模型中:
model.addAttribute("fullNameList", usernameList);
然后在视图层:
<tr th:each="fullName : ${fullNameList}">
<a href="#" th:text="${fullName}" ></a> <br>
</tr>