使用Spring,PostgreSQL和JDBC。数据库已设置,我成功使用JDBC从数据库中提取数据。但是,使用表单制作POST
时,更改不会通过。在调试模式下,模型上存在正确的属性,因此我确信错误发生在数据库连接中。
表格:
<form action="update-user" method="POST">
<ul class="form-flex-outer">
<li>
<label for="username">Username:</label>
<input type="text" name="username" value="${ currentUser.username }" />
</li>
<li>
<label for="password">Password:</label>
<input type="text" name="password" value="${ currentUser.password }" />
</li>
<li>
<label for="email">Email:</label>
<input type="text" name="email" value="${ currentUser.email }" />
</li>
<li>
<input type="submit" value="Submit changes" />
<input type="hidden" value="${ currentUser.userId }" />
</li>
</ul>
</form>
控制器:
@RequestMapping(path="/update-user", method=RequestMethod.POST)
public String submitUpdatedUserInformation(User user) {
userDAO.updateUserInformation(user);
return "redirect:/user-home";
}
DAO方法:
@Override
public void updateUserInformation(User user) {
String sqlQuery = "UPDATE users " +
"SET username = ?, " +
"password = ?, " +
"email = ?, " +
"updated_at = NOW() " +
"WHERE user_id = ?";
jdbcTemplate.update(sqlQuery, user.getUsername(), user.getPassword(), user.getEmail(), user.getUserId());
}
我知道springmvc-servelet.xml
文件中有关于事务的配置,但我过去使用过的JDBC没有遇到任何麻烦。
从DB init创建用户:
CREATE USER app_owner WITH PASSWORD 'app_owner1';
GRANT ALL
ON ALL TABLES IN SCHEMA public
TO app_owner;
GRANT ALL
ON ALL SEQUENCES IN SCHEMA public
TO app_owner;
答案 0 :(得分:1)
不应该
<input type="hidden" value="${ currentUser.userId } }" />
是
<input type="hidden" value="${ currentUser.userId }" name="userid" />