JSF - erro chave estrangeira

1 resposta
asandro1501

Estou tentando fazer um cadastro com chaves estrangeiras mas me retorna um erro. Minha tabela possui relacionamentos e por causa das chaves estrangeiras definidas não grava nada.

O erro retornado é esse:WARNING: JSF1063: AVISO! Definindo valor de atributo não serializável em HttpSession (chave: usuarioBean, classe do valor: bean.UsuarioBean).

Meu bean por, enquanto é isso

@ManagedBean
@SessionScoped
public class UsuarioBean {
    Connection conexao = new FabricaConexao().fazConexao(); //Cria uma nova conexao  ao banco de dados

    //cria um novo objeto(modelo) usuario e seus gets e sets
    Usuario usuario = new Usuario();

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    ////////////////////////////
    public void gravaUsuario() {
        String sql = "insert into usuario(codfuncionario,idpermissao,login,senha, codfuncao) values(?,?,?,?,?)";
        PreparedStatement pstmt;

        try {
            pstmt = this.conexao.prepareStatement(sql);

            pstmt.setInt(1, usuario.getCodfuncionario());
            pstmt.setInt(2, usuario.getIdpermissao());
            pstmt.setString(3, usuario.getLogin());
            pstmt.setString(4, usuario.getSenha());
            pstmt.setInt(5, usuario.getCodfuncao());
            pstmt.execute();
            usuario = new Usuario();

            pstmt.close();

        } catch (SQLException ex) {
            Logger.getLogger(UsuarioBean.class.getName()).log(Level.SEVERE, null, ex);
        }


    }
}
E a minha página CadastraUsuario.xhtml
<ui:composition template="template.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets">


    <ui:define name="title"> Cadastro de Usuários </ui:define>

    <ui:define name="content">

        <h:form >

            <p:panel   header="Cadastro de Usuários" style="width: 550PX">
                <p:messages />
                <h:panelGrid columns="2"  cellspacing="10">

                    <h:outputText value="Matrícula do Funcionário:"/>
                    <h:inputText value="#{usuarioBean.usuario.codfuncionario}" style="width: 350PX" required="true" requiredMessage="Campo [Matrícula do Funcionario] obrigatório"/>

                    <h:outputText value="Permissão: "/>
                    <h:inputText value="#{usuarioBean.usuario.idpermissao}" required="true" requiredMessage="Campo [Permissão] obrigatório"/>

                    <h:outputText value="Login: "/>
                    <h:inputText value="#{usuarioBean.usuario.login}"  required="true" requiredMessage="Campo [Login] obrigatório"/>

                    <h:outputText value="Senha "/>
                    <p:keyboard value="#{usuarioBean.usuario.senha}" />


                    <h:outputText value="Código da Função "/>
                    <h:inputText value="#{usuarioBean.usuario.codfuncao}" style="width: 350PX"/>
                   

                    <h:commandButton value="Salvar"  action="#{usuarioBean.gravaUsuario}"  style="width: 100PX" />
                    <h:commandButton value="Limpar" type="reset" style="width: 100PX"/>


                </h:panelGrid>

            </p:panel>
        </h:form>

    </ui:define>
</ui:composition>

Retirei os relacionamentos das tabelas mas o erro continua aparecendo no log do servidor mas agora tá gravando.

Se alguém puder me ajudar a descobrir o que é este erro eu agradeço

1 Resposta

dev.rafael

Se o seu ManagedBean tiver um escopo maior q @RequestScoped (isto é @ViewScoped, @SessionScoped ou @ApplicationScoped) então ele precisa implementar a interface Serializable.

Criado 11 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 1
Participantes 2