Erro que aparece de vez em quando! Urgente!

Pessoal! Realmente este erro ocorre de vez em quando, e não depende do tipo de dados que a pessoa insere sabe, tipo o campo é pra 10 caracteres e colocam 15.

Este erro ocorre quando a página é carregada e nem sempre ocorre

Segue o código do arquivo _novoCadastro.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core">

    <f:view contentType="text/html">
        <h:panelGrid columns="1">

            <h:panelGrid style="border: 0px;" cellpadding="0" cellspacing="10" columns="2">
                <h:graphicImage url="../imagens/atencao_p.gif" style="width: 18px; height: 19px; text-align: left"/>
                <h:outputLabel value="Leia antes de preencher" styleClass="fonte_cinza" style="text-align: left; font-weight: bold; "/>
            </h:panelGrid>         
            <h:form id="formAssociado">
                <p:panel id="panel" style="margin: 0px auto; border: 0px;">
                    <h:panelGrid columns="2" style="margin-left: 10px; border: 0px;">
                        <h:outputLabel value="*Nome: "/>
                        <p:inputText value="#{novoEstudanteMB.associado.nome}" style="width: 180px;" id="nome" required="true"
                                     requiredMessage="campo [Nome] é obrigatório"/>
                        
                        <h:outputLabel value="*RG: "/>
                        <p:inputText value="#{novoEstudanteMB.associado.rg}" style="width: 180px;" id="rg" required="true"
                                     requiredMessage="campo [RG] é obrigatório"/>
                        
                        <h:outputLabel value="Data Nascimento: "/>
                        <p:inputMask id="datanascimento" label="Data Nascimento" style="width: 180px" value="#{novoEstudanteMB.dataNascimento}" mask="99/99/9999">
                            <f:convertDateTime locale="pt_BR" timeZone="America/Sao_Paulo"/>
                        </p:inputMask>
                        
                        <h:outputLabel value="Sexo: "/>
                        <p:selectOneRadio value="#{novoEstudanteMB.associado.sexo}" id="sexMachine">
                            <f:selectItem itemLabel="Masculino" itemValue="Masculino" />
                            <f:selectItem itemLabel="Feminino" itemValue="Feminino" />
                        </p:selectOneRadio>
                        
                        <h:outputLabel value="Fumante: "/>
                        <p:selectOneRadio value="#{novoEstudanteMB.associado.fumante}">
                            <f:selectItem itemLabel="Sim" itemValue="Sim"/>
                            <f:selectItem itemLabel="Não" itemValue="Não"/>
                        </p:selectOneRadio>
                        
                    </h:panelGrid>
                </p:panel>
            </h:form>
            <h:panelGrid border="0" cellpadding="0" cellspacing="0">
                <p:growl showDetail="true" showSummary="true" id="msgs"/>                
            </h:panelGrid>                        
        </h:panelGrid>
    </f:view>
</html>

e o codigo do arquivo NovoEstudanteMB.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mb.visitante;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import modelo.Associado;
import modelo.BairroCidade;
import negocio.AssociadoJpaController;
import negocio.BairroCidadeJpaController;
import org.primefaces.context.RequestContext;
import util.ValidatorCPFCNPJ;
import util.textUtil;

/**
 *
 * @author iuri
 */

@ManagedBean
@ViewScoped
public class NovoEstudanteMB implements Serializable {

    private Associado associado = new Associado();
    private Date dataNascimento = null;
    private AssociadoJpaController associadoJpa;
    private String confirmaSenha;
    private RequestContext requestContext;
    private Boolean aceite = false;

    public Boolean getAceite() {
        return aceite;
    }

    public void setAceite(Boolean aceite) {
        this.aceite = aceite;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public String getConfirmaSenha() {
        return confirmaSenha;
    }

    public void setConfirmaSenha(String confirmaSenha) {
        this.confirmaSenha = confirmaSenha;
    }

    public Associado getAssociado() {
        return associado;
    }

    public List<BairroCidade> completeBairro(String query) {
        List<BairroCidade> lc = new BairroCidadeJpaController().findAllByNomeBairro(query);
        return lc;
    }

    public void setAssociado(Associado associado) {
        this.associado = associado;
    }

    private boolean validaForm() {

        String nome[] = associado.getNome().split(" ");
        if (nome[0].toLowerCase().trim().equals(associado.getSenha())){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Favor digitar uma senha diferente do seu nome.", ""));
            return false;            
        }        
        
        String cpfSemFormato = textUtil.removeformatacao(associado.getCpf());
        if(cpfSemFormato.equals(associado.getSenha())){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Favor digitar uma senha diferente do seu CPF.", ""));
            return false;           
        }
        
        if(aceite == false){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Favor aceitar os termos de responsabilidade.", ""));
            return false;
        }
        
        if (existeCPF()) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Já existe um cadastro com o CPF [" + associado.getCpf() + "].", ""));
            return false;
        }

        if (!new ValidatorCPFCNPJ(ValidatorCPFCNPJ.cpf, associado.getCpf()).isValido()) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "CPF " + associado.getCpf() + "] inválido.", ""));
            return false;
        }
        
        if (associado.getBairro() == null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Informe um bairro", ""));
            return false;
        }

        //verifica se as senhas digitadas sao iguais
        if (!confirmaSenha.equals(associado.getSenha())) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Senha Inválida", "As senhas digitadas são diferentes"));
            return false;
        }

        return true;
    }

    public void cadastra() {

        if (!validaForm()) {
            return;
        }

        if (dataNascimento != null) {
            associado.setDatanascimento(new java.sql.Date(dataNascimento.getTime()));
        }

        associado.setSituacao(true);
        associado.setDatacadastro(new java.sql.Date(System.currentTimeMillis()));
        associado.setUlt_atualiz(new java.sql.Date(System.currentTimeMillis()));

        //cria
        associadoJpa.create(associado);

        requestContext = RequestContext.getCurrentInstance();
        requestContext.addCallbackParam("sucesso", true);

    }

    private boolean existeCPF() {
        if (!associadoJpa.verificaExistenciaCPF(associado.getCpf())) {
            return true;
        }
        return false;
    }

    public NovoEstudanteMB() {
        associadoJpa = new AssociadoJpaController();
        associado.setSexo("Masculino");
        associado.setFumante("Não");
    }
}

vc tem implementado algum phaselistener ou algum filtro ou algo que esteja antes da página ser renderizada?

Cara… na vdd esqueci de dizer que a pagina _novoCadastro.xhtml é um include
e este é o arquivo que chama ele

novoEstudante.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <link rel="stylesheet" type="text/css" href="est_lfe.css" />
    </h:head>

    <h:body>
        <div id="container">

            <div id="containermain">
                <table border="0" width="100%" cellspacing="0" cellpadding="0">
                    <tbody>
                        <tr>
                            <td height="100">

                            </td>
                        </tr>
                    </tbody>
                </table>

                <div id="espiraltop">
                    <img src="../imagens/espiralg.gif"/>
                </div>

                <div id="logo">
                    <a href="../"><img border="0" src="../imagens/logo_login.gif"/></a>
                </div>

                <div id="orelha">
                    <img src="../imagens/orelha.gif"/>
                </div> 

                <div id="barra_titulo">
                    <img border="0" src="../imagens/bar_cad.gif"/>
                </div>

                <div id="btn_top">
                    <table border="0" cellpadding="0" cellspacing="0" height="28">
                        <tbody>
                            <tr>
                                <td width="33%" align="center" height="5" valign="bottom"><a href="/"><img src="../imagens/btn_ajuda.gif" alt="Clique para obter ajuda." border="0" title="Clique para obter ajuda."/></a></td>
                                <td width="30%" align="center" valign="bottom" height="5"><a href="/"><img src="../imagens/btn_sobre.gif" alt="Clique para saber mais sobre o SIGAE." border="0" title="Clique para saber mais sobre o SIGAE."/></a></td>
                            </tr>
                            <tr>
                                <td width="33%" align="center" height="1" valign="bottom">Ajuda</td>
                                <td width="34%" align="center" height="1" valign="bottom">Sobre</td>
                            </tr>
                            <tr>
                                <td width="33%" align="center" height="27" valign="bottom">&nbsp;</td>
                                <td width="34%" align="center" height="27" valign="bottom">&nbsp;</td>
                            </tr>
                        </tbody>    
                    </table>
                </div>

                <div id="data">
                </div>
            </div>

            <div id="espiralbot">
                <img src="../imagens/espiralg.gif"/>
            </div>

            <ui:include src="_novoCadastro.xhtml" />

        </div>

        <p:confirmDialog message="Cadastrado com sucesso"
                         header="Cadastro de Estudante"
                         severity="alert"
                         closable="false"
                         closeOnEscape="false"
                         modal="true"
                         widgetVar="cdConfirma">

            <h:form>
                <p:commandButton value="Ok" oncomplete="cdConfirma.hide(); self.location = 'login.xhtml';"/>
            </h:form>

        </p:confirmDialog>        

    </h:body>
</html>

Só pra esclarece…
to usando Primefaces 3.0 M2 e JSF 2.0

faz um teste, tenta colocar o <h:form> desde o inicio da tua pagina de cadastro e incluindo esta pagina do include.

eu fiz diferente, criei somente uma pagina, sem includes como esta

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core">

    <h:head>
        <link rel="stylesheet" type="text/css" href="est_lfe.css" />
    </h:head>

    <h:body>

        <f:view contentType="text/html">
            <div id="container">
                <h:panelGrid columns="1">

                    <h:panelGrid columns="1">
                        <h:outputLabel>
                            Preencha os campos abaixo com o maior n&uacute;mero de informa&ccedil;&otilde;es poss&iacute;vel, os dados aqui informados ser&atilde;o utilizados por sua associa&ccedil;&atilde;o para melhor otimiza&ccedil;&atilde;o do transporte.
                        </h:outputLabel>
                        <h:outputLabel>
                            Exceto quando indicado, o preenchimento de todos os campos &eacute; obrigat&oacute;rio.
                        </h:outputLabel>
                        <h:outputLabel>
                            &Eacute; necess&aacute;rio que o voc&ecirc; tenha pelo menos um endere&ccedil;o de e-mail para que este cadastro seja efetivado.
                        </h:outputLabel>
                        <h:outputLabel>
                            Se voc&ecirc; j&aacute; efetuou esse cadastro alguma vez, n&atilde;o &eacute; necess&aacute;rio cadastrar novamente, basta clicar em &quot;estudantes&quot;, informar seu CPF e sua senha e atualizar as informa&ccedil;&otilde;es.
                        </h:outputLabel>
                    </h:panelGrid>

                    <h:panelGrid style="border: 0px;" cellpadding="0" cellspacing="10" columns="2">
                        <h:graphicImage url="../imagens/atencao_p.gif" style="width: 18px; height: 19px; text-align: left"/>
                        <h:outputLabel value="Leia antes de preencher" styleClass="fonte_cinza" style="text-align: left; font-weight: bold; "/>
                    </h:panelGrid>         
                    <h:form id="formAssociado">
                        <p:panel id="panel" style="margin: 0px auto; border: 0px;">
                            <h:panelGrid columns="2" style="margin-left: 10px; border: 0px;">
                                
                                <h:outputLabel value="*Nome: "/>
                                <p:inputText value="#{novoEstudanteMB.associado.nome}" style="width: 180px;" id="nome" required="true"
                                             requiredMessage="campo [Nome] é obrigatório"/>
                                
                                <h:outputLabel value="*RG: "/>
                                <p:inputText value="#{novoEstudanteMB.associado.rg}" style="width: 180px;" id="rg" required="true"
                                             requiredMessage="campo [RG] é obrigatório"/>

                                <h:outputLabel value="Data Nascimento: "/>
                                <p:inputMask id="datanascimento" label="Data Nascimento" style="width: 180px" value="#{novoEstudanteMB.dataNascimento}" mask="99/99/9999">
                                    <f:convertDateTime locale="pt_BR" timeZone="America/Sao_Paulo"/>
                                </p:inputMask>

                                <h:outputLabel value="Sexo: "/>
                                <h:selectOneMenu value="#{novoEstudanteMB.associado.sexo}">
                                    <f:selectItem itemLabel="Masculino" itemValue="Masculino"/>
                                    <f:selectItem itemLabel="Feminino" itemValue="Feminino"/>
                                </h:selectOneMenu>

                                <h:outputLabel value="Fumante: "/>
                                <h:selectOneMenu value="#{novoEstudanteMB.associado.fumante}">
                                    <f:selectItem itemLabel="Não" itemValue="Não" />
                                    <f:selectItem itemLabel="Sim" itemValue="Sim" />
                                </h:selectOneMenu>

                                <h:outputLabel  value="Pai: "/>
                                <p:inputText id ="pai" style="width: 350px;" value="#{novoEstudanteMB.associado.pai}" maxlength="200"/>                    

                                <h:outputLabel value="Mãe: "/>
                                <p:inputText id ="mae" style="width: 350px" value="#{novoEstudanteMB.associado.mae}" maxlength="200"/>

                                <h:outputLabel value=""/><h:outputLabel value=""/>
                                <h:outputLabel value=""/><h:outputLabel value=""/>
                                <h:outputLabel value=""/><h:outputLabel value=""/>

                                <h:graphicImage url="../imagens/atencao_p.gif"/>
                                <h:outputLabel style="color: #666;" value="Os dados abaixo ser&atilde;o utilizados por voc&ecirc; para futuros acessos ao cadastro "/>

                                <h:outputLabel value="*CPF: "/>
                                <p:inputMask id ="cpf" mask="999.999.999-99"  
                                             required="true" requiredMessage="Campo [CPF] obrigatório" style="width: 150px" value="#{novoEstudanteMB.associado.cpf}"/>

                                <h:outputLabel value="*Senha: "/>
                                <p:password value="#{novoEstudanteMB.associado.senha}"
                                            required="true" maxlength="100"
                                            requiredMessage="Insira uma senha"
                                            promptLabel="Por favor digite a senha" 
                                            weakLabel="Baixa"
                                            feedback="false"
                                            minLength="2"
                                            goodLabel="Boa" 
                                            strongLabel="Forte" />

                                <h:outputLabel value="*Confirmação da Senha: "/>
                                <p:password value="#{novoEstudanteMB.confirmaSenha}"
                                            required="true" maxlength="100"
                                            feedback="false"
                                            minLength="2"
                                            requiredMessage="Insira uma senha de confirmação"
                                            promptLabel="Por favor insira a senha de confirmação" weakLabel="Baixa"
                                            goodLabel="Boa" strongLabel="Forte" />
                                
                                <h:outputLabel value="Email: " />
                                <p:inputText value="#{novoEstudanteMB.associado.email}" style="width: 180px;" id="em_est" required="true"
                                             requiredMessage="campo [Nome] é obrigatório"/>

                            </h:panelGrid>
                        </p:panel>
                    </h:form>
                    <h:panelGrid border="0" cellpadding="0" cellspacing="0">
                        <p:growl showDetail="true" showSummary="true" id="msgs"/>                
                    </h:panelGrid>                        
                </h:panelGrid>
            </div>
        </f:view>
    </h:body>
</html>

e continua dando erro…

e o pior que não é sempre sabe, as vezes da erro outras vezes não
e depende do componente sabe, se eu colocar mais um <p:inputText> ele da erro…
isso ta muito estranho
tanto na versão 2.2 quando 3.0 M2
será que é problema no Glassfish 3.1?

Pessoal… eu mudei a versão do GlassFish de 3.1 para 3.0…
alguem sabe o porque disso?

fllw…

alguem ?

Estou passando exatamente pelo mesmo problema.
Estou usando Primefaces 2.2.1, Glassfish 3.1.1 Web Profile e JSF é a implementação Mojarra 2.1.3 do próprio Glassfish.

Alguém pode nos ajudar?

f2pro ,

Tente trocar o seu managed bean para @SessionScoped que irá funcionar.
Eu sei que não é a solução para o problema, mas já é uma pista.

To com o mesmo problema. Alguem conseguiu?

Olá romulosb , conseguiu resolver o problema?

Eu estava com o mesmo problema, então fiz o que o Sandro recomendou e funcionou perfeitamente, porém eu estou utilizando o @ViewScoped

Jonathan_Sales ,

Se você acabou de executar/implantar o projeto, abriu o navegador e tentou acessar http://localhost:8080/meuFormulario.jsf, cujo managedbean usa um escopo que não seja o SessionScoped, com certeza o erro vai aparecer.

Mas se você tiver uma página bem simples. Por exemplo, um login.xhtml. Como segue abaixo:

login.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"    
    xmlns:h="http://java.sun.com/jsf/html">
    
<h:head>
  <title>Teste</title>
</h:head>

<h:body>
    <h:form>
    	<h:panelGrid columns="2">
            <h:outputText value="Nome" />
            <h:inputText value="#{loginBean.nome}" />
            <h:outputText value="Password" />
            <h:inputSecret value="#{loginBean.password}" />
        </h:panelGrid>
        <h:commandButton value="Login" action="#{loginBean.logar}" />
    </h:form>
</h:body>
</html>

Desta vez você executa/implanta o projeto, acesse primeiramente o link http://localhost:8080/login.jsf e em seguida tente acessar o seu formulário que está dando erro. Vai funcionar independente do escopo que você estiver utilizando.

Só não sei ainda explicar o motivo.

Acho que esse problema tem uma relação com esse bug:

http://java.net/jira/browse/JAVASERVERFACES-2215

Temos uma biblioteca de componentes que começou a dar esse erro quando atualizamos para o Glassfish 3.1.1, no 3.0 funcionava normalmente. Acessando qualquer página “menor” (tamanho em bytes), a sessão é criada e podemos acessar páginas “maiores” sem problemas. O fogo é que qualquer workaround para isso parece POG. :slight_smile:

f2 pro, vc voltou para a versao 3.0 do glassfish e resolveu seu problema??? Estou com o mesmo problema aqui há 2 dias cara, se alguém tiver a soluçao pra isso posta aí por favor!!!

f2 pro, quando vc voltou sua versao do glassfish resolveu seu problema??? Se alguém já tiver a soluçao pra esse tópipco poste aqui por favor!!!

O pessoal tem resolvido utilizando esse artifício:

http://forum.primefaces.org/viewtopic.php?f=3&t=13151#p43963

[quote=ranophoenix]O pessoal tem resolvido utilizando esse artifício:

http://forum.primefaces.org/viewtopic.php?f=3&t=13151#p43963[/quote]

Pessoal,

já quebrei muito a cabeça com isso, e no meu caso,
incluir isso no web.xml resolveu !

<context-param>
<param-name>com.sun.faces.writeStateAtFormEnd</param-name>
<param-value>false</param-value>
</context-param>

Olá,
Por algum motivo o JSF tenta criar o viewScoped antes da sessão.

Podemos resolver de duas maneiras:

Colocar um <h:form> (vazio) logo depois da <h:body>:

&lt;h:body&gt;
    &lt;h:form&gt;&lt;/h:form&gt;
    &lt;!-- página --&gt;
&lt;/h:body&gt;

Fazer qualquer chamada a um @SessionScoped antes do @ViewScoped:

    &lt;h:outputText value="#{beanSessao.algo}" /&gt;