Я использую Hibernate + JSF + PrimeFaces. Теперь я хочу обновить пароль администратора, но всегда получаю диалоговое окно с ошибкой. Я не могу понять, что неправильно в моем коде. Надеюсь, кто-нибудь предложит мне.Не удается обновить пароль, используя Hibernate
loginBean (SessionScoped)
public class loginBean {
private Users username;
private UsersDao userdao;
/** Creates a new instance of loginBean */
public loginBean() {
userdao = new UsersDao();
username = new Users();
}
public Users getUsername() {
return username;
}
public void setUsername(Users username) {
this.username = username;
}
public void updateUser(){
String msg;
if(userdao.updateUser(username)){
msg = "Updated Successfully!";
}else{
msg = "Error. Please check again!";
}
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(msg, message);
}
}
UserDAO.java
public class UsersDao {
public boolean updateUser(Users user){
boolean flag;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
try{
session.beginTransaction();
session.save(user);
session.beginTransaction().commit();
flag = true;
}catch(Exception e){
flag = false;
session.beginTransaction().rollback();
}
return flag;
}
}
XHTML
<p:growl id="growl" showDetail="true" life="3000" />
<h:form id="tab">
<h:outputLabel>Password</h:outputLabel>
<h:inputSecret value="#{loginBean.username.password}" />
<p:commandButton id="loginButton" value="Login" update=":growl" ajax="false" action="#{loginBean.updateUser}"/>
</h:form>
И что говорит ваш журнал/консоль? –
«Ошибка. Повторите попытку!». Я использую if ... else ... –
Ваш «updateUser» вашего DAO, конечно же, бросает исключение (которое впоследствии улавливается и помечено). Какое это исключение? Здесь полезны трассировки ошибок уровня программиста, а не ошибки, отображаемые конечным пользователям. –