我是初学者学习spring MVC,现在我有一个问题无法解决。我花了很多时间想用Spring MVC来更新当前用户数据,但总是兜圈子。
例如登录用户是[test2],我想更新mAccount和mPassword,如何获取登录 session 并单击jsp表单进行更新。我应该做什么?(mId是主键)
现在当我点击提交更新时,但是SQL数据库mAccount和mPassword没有任何变化。 我认为我的 Controller 在获取登录 session 时一定有问题,所以我无法更新我想要的内容。
请原谅我的英语不好,请帮我解决这个问题。 我真的需要帮助!
SQL成员数据库图像链接:
这是我的问题链接:(内含完整代码)
道:
public MemberBean getMemberBymId(int mId);
DaoImpl:
@Override
public MemberBean getMemberBymId(int mId) {
MemberBean mb = null;
Session session = factory.getCurrentSession();
String sql = "FROM MemberBean mb WHERE mb.mId=:mid";
mb = (MemberBean) session.createQuery(sql).setParameter("mid", mId).uniqueResult();
return mb;
}
@Override
public void updateMember(MemberBean mb) {
String hql = "UPDATE MemberBean mb SET mb.mAccount =:mAccount , mb.mPassword =:mPassword WHERE mId =:mId";
Session session = factory.getCurrentSession();
session.createQuery(hql).setParameter("mAccount", mb.getmAccount()).setParameter("mPassword", mb.getmPassword())
.setParameter("mId", mb.getmId()).executeUpdate();
}
服务:
MemberBean getMemberBymId(int mId);
void updateMember(MemberBean mb );
服务实现:
@Transactional
@Override
public MemberBean getMemberBymId(int mId) {
MemberBean mb = null;
mb = dao.getMemberBymId(mId);
return mb;
}
@Transactional
@Override
public void updateMember(MemberBean mb) {
if (mb.getmAccount() != null && mb.getmPassword() != null) {
dao.updateMember(mb);
}
}
Controller :
@RequestMapping(value = "/UpdateMemberForm/{mId}", method = RequestMethod.GET)
public String AddLoginMemberBeantoUpdateForm(Model model,HttpSession session,@PathVariable Integer mId) {
MemberBean mb = memberservice.getMemberBymId(mId);
model.addAttribute("MemberBean", mb);
return "register/updateMember";
}
@RequestMapping(value = "/UpdateMemberForm", method = RequestMethod.POST)
public String UpdateMember(@ModelAttribute("MemberBean")MemberBean mb, BindingResult result ) {
memberservice.updateMember(mb);
return "index";
}
Jsp:
<form:form method="POST" modelAttribute="MemberBean">
<table>
<tr>
<td>帳號:</td>
<td><form:input id="mAccount" path="mAccount" type="text" value="${mb.mAccount}"
size="10"/>
</td>
</tr>
<tr>
<td>密碼:</td>
<td><form:input id="mPassword" path="mPassword" type="text" value="${mb.mPassword}"
size="10"/>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="更新" >
</td>
</tr>
</table>
</form:form>
最佳答案
如果我错了,请纠正我,您想更新帐户,我认为问题在于 updateMember 函数。
//Let me show a example update a object.
Customer customerToUpdate = customerRepository.getOne(id);
customerToUpdate.setName(customerDto.getName);
customerRepository.save(customerToUpdate);
//But your code directly updating a user account without find the user which is gonna changed.I could't examine full of codes but ı think problem occurs here.
memberservice.updateMember(mb);
关于java - 如何使用 Spring MVC 更新我当前的用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806311/