2013-05-21 2 views
0

это методне удалось обновить объект

public String changePassword(int id){ 
     FacesContext context = FacesContext.getCurrentInstance();     
     try{ 
      utx.begin(); 
      Wuser wuser= em.find(Wuser.class, id); 
      wuser.setPassword(passwordv); 
      utx.commit(); 
     return "login"; 
    }catch (Exception e) {    
       FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                 "Error changing password! ", 
                 "Unexpected error when changing password for your account. Please contact the system Administrator"); 
       context.addMessage(null, message); 
       Logger.getAnonymousLogger().log(Level.SEVERE, 
               "Unable to change password ", 
               e); 
       return null; 
     } 
    } 

это jsf страница

<f:view> 
     <h:form id="change">    
      <h:panelGrid columns="3" border="0"> 
       Username: <h:inputText id="username" 
             requiredMessage="*" 
             value="#{usermanager.username}" 
             required="true"/> 
          <h:message for="change:username" style="color: red"/> 
       Old Password: <h:inputSecret id="password"  
             requiredMessage="*" 
             value="#{usermanager.password}" 
             required="true"/> 
          <h:message for="change:password" style="color: red"/> 
       New Password (verify): <h:inputSecret id="passwordv" 
                requiredMessage="*" 
                value="#{usermanager.passwordv}" 
                required="true"/> 
            <h:message for="change:passwordv" style="color: red"/> 
      Id: <h:inputText id="id" 
             requiredMessage="*" 
             value="#{usermanager.id}" 
             required="true"/> 
          <h:message for="change:id" style="color: red"/> 
      </h:panelGrid> 
      <h:commandButton id="submit" 
          value="Create" 
          action="#{usermanager.changePassword(id)}"/> 


      <h:messages style="color: red" globalOnly="true"/> 
     </h:form> 
+0

Пожалуйста, добавьте описание ошибки вы получаете и, возможно, StackTrace, если у вас есть. – Simon

ответ

0

Хей radoslaf,

изменить ваш час: commitButton Код для этого:

<h:commandButton id="submit" 
          value="Create" 
          action="#{usermanager.changePassword(usermanager.id)}"/> 

Недвижимость "i d "известен только в связи с usermanager, который, я думаю, предоставляет объект currentUser, который вы хотите редактировать.

Greets Патрик

+0

моя основная проблема: я не могу обновить объект, если я это делаю ** em.persist (wuser) **. Я получаю дубликат записи, но если я делаю ** em.merge (wuser) ** entity не обновляется – sstelkar

+0

как обновить объект ** utx.begin(); Wuser wuser = em.find (Wuser.class, id); wuser.setPassword (passwordv); utx.commit(); ** - указанное выше право кода для обновления объекта – sstelkar

0

не было никакой проблемы с кодом. проблема заключалась в том, что пользователь базы данных не имел привилегий обновления.

Я обнаружил ошибку при проверке журналов сервера.

я есть подходящий модифицированный код для проверки user.thanks за помощь

Смежные вопросы