Não consigo fazer update hibernat+jsf

3 respostas
E

Olá pessoal,

Sou novo na programação web em java, estou tentando fazer update no meu projeto segue abaixo o controlador o model e a pagina Jsp, ele simplesmente nao faz o update na base de dados postgresql8.4!

---------------JSP--------------

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
    <c:view>
        <c:loadBundle basename="i18n.Messages" var="msgs"/>
        <head>
            <title>
                <h:outputFormat value="#{msgs.toolName}"/>
            </title>
            <meta http-equiv="Content-Type" content="text/html;charset=UTF-8;">
            <style type="text/css" media="all">@import "estilo.css";</style>
        </head>
        <body>
            <h:form id="entry" >
                <h1 class="tool_name"><h:outputFormat value="#{msgs.userManagerTitle}"/></h1>
                <div class="block_menu"> &nbsp;&nbsp;
                    <strong><span class="selected_sorting_option"><h:outputFormat value="#{msgs.editionTitle}"/></span></strong>
                    <span class="tool_menu_separator">|</span>
                    <h:commandLink action="usuario_list" value="#{msgs.list}" immediate="true"/>
                    <span class="tool_menu_separator">|</span>
                    <h:outputFormat value="#{msgs.help}"/>
                    <span class="tool_menu_separator">|</span>
                    <h:commandLink action="#{usuarioCtlr.logout}" value="#{msgs.logout}" immediate="true"/>
                </div>
                <br>
                <h:inputHidden value="#{usuarioCtlr.usuario}" immediate="true"/>
                <div class="field">
                    <h:outputLabel styleClass="field_label" value= "#{msgs.user_name_in}"/>
                    <div class="field_data">
                        <h:inputText id="nome" value="#{usuarioCtlr.usuario.nome}" title="Nome" style="width:50%;" required="true"/>
                        <h:message for="nome" />
                    </div>
                </div>
                <div class="field">
                    <h:outputLabel styleClass="field_label" value="#{msgs.user_email_in}"/>
                    <div class="field_data">
                        <h:inputText id="email" value="#{usuarioCtlr.usuario.email}" title="Email" style="width:50%;" required="true">
                            <c:validator validatorId="EmailValidator" />
                        </h:inputText>
                        <h:message for="email" />
                    </div>
                </div>
               
               
                <div class="field" align="right">
                    <h:commandButton value="#{msgs.save}" action="#{usuarioCtlr.edit}" immediate="true" />
                    <h:commandButton value="#{msgs.cancel}" action="usuario_list" immediate="true"/>
                </div>
                <br>
                <div class="foot">
                    &nbsp;&nbsp;&nbsp;&nbsp;<h:outputFormat value="#{msgs.foot}"/>&nbsp;&nbsp;
                </div>
            </h:form>
        </body>
    </c:view>
</html>

------------------------Controller--------------------------------------


 public String editSetup() {
        setUsuarioFromRequestParam();
        return "usuario_edit";
    }

    public String edit()
    
  {
        EntityManager em = getEntityManager();
        try {
            em.getTransaction().begin();
         
            usuario = em.merge(usuario);
            
            em.getTransaction().commit();
            addSuccessMessage("Usuario was successfully updated.");
        } catch (Exception ex) {
            try {
                addErrorMessage(ex.getLocalizedMessage());
                em.getTransaction().rollback();
            } catch (Exception e) {
                addErrorMessage(e.getLocalizedMessage());
            }
        } finally {
            em.close();
        }
        return "usuario_list";
    }
    

---------------Model---------------



package sead.ufscar.br.model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;

/**
 *
 * @author eder
 */
 @Entity
    @Table(name = "Usuario")
    @NamedQueries( {
    @NamedQuery(name = "Usuario.findById", query = "SELECT u FROM Usuario u WHERE u.id = :id"),
    @NamedQuery(name = "Usuario.findByNome", query = "SELECT u FROM Usuario u WHERE u.nome = :nome")
    })
public class Usuario implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id",unique=true,nullable=false,insertable=true,updatable=true)
    private Integer id;
    @Column(name="nome")
    private String nome;
    @Column(name="email")
    private String email;

    

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

  

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
  
   public Usuario(){
     
                    }
    
}

Help me!

3 Respostas

E

Niguem que possa ajudar ???
:frowning:

aix

porque não usa o debug? vc sabe se sua action esta sendo chamada ?

E

aix:
porque não usa o debug? vc sabe se sua action esta sendo chamada ?

Olá,
Muito obrigado pela ajuda amigo, ao fazer o debug realmente percebi que ele não estava passado os valores ao objeto usuario, tudo isso por causa do campo “immediate”.Funciona assim o conjunto de atributos imediato para “true” é comumente usado quando você quer cancelar um formulário. Em qualquer outro caso, você não deve ativar imediato, ele ignora a validação.

:smiley:

[]s

Criado 14 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 3
Participantes 2