Problemas com SEAM

4 respostas
Brucelee

Pessoal, é o seguinte…

Eu tenho uma aplicação que roda SEAM com Glassfish e JSF (usando ICEFaces), o que ocorre é o seguinte:

1 - Eu tenho um back bean que além de atributos tambem possui algumas ações que dizem respeito ao mesmo:

@Entity
@Name("fssc")
@Scope(ScopeType.APPLICATION)
public class FSSC implements Serializable {

// atributos com getters, setters e outros metodos

Na minha JSP eu tenho:

<ice:inputText value="#{fssc.cnpjPessoaJuridica}" id="cnpjPessoaJuridica" maxlength="100" onkeyup="validar(this,event);"/>

.....

<ice:commandButton value="Avancar" styleClass="CommandButton" id="nextDadosObrigatorios" action="#{servicos.metodoTeste}" immediate="true" />

Tenho uma outra classe que é como se fosse a “action” que recebe as requisicoes para mudar de visão:

@Name("servicos")
@Scope(ScopeType.APPLICATION)
public class Servicos {

@In(required=false, value="fccs") @Out(required=false, value="fccs")
	private FSSC fccs;

//aqui eu faco um testa para ver se ela esta preenchida
public void metodoTeste(){

 FSSC teste = this.fccs;

}

Depois que eu clico no botao para “Avancar”, a variavel “fssc” NAO vem preenchida…Alguem sabe o que esta faltando?

Como isso funciona no Seam? Alguma ajuda? :frowning:

4 Respostas

maurenginaldo

Tente tirar a tag immediate=“true” do botão.

Com essa tag setada para true o Jsf pula a fase de validações. O seu método deve estar sendo chamado antes do objeto fssc ser setado.
Dê uma debugada para conferir

Brucelee

Tentei amigo, mas não deu certo…

Eu tenho que colocar no meu back bean os @In e @Out para cada atributo?

Na minha classe servicos, a linha:

@In(required=false, value="fccs") @Out(required=false, value="fccs")  
     private FSSC fccs;

Está correta?

Obrigado.

maurenginaldo

O seu objeto chama fccs e na tela você colocou fssc

@In(required=false, value="fccs") @Out(required=false, value="fccs")  
   private FSSC fccs;  

 <ice:inputText value="#{fssc.cnpjPessoaJuridica}" id="cnpjPessoaJuridica" maxlength="100" onkeyup="validar(this,event);"/>

outra coisa,

você definiu o scopo da sua classe como @Scope(ScopeType.APPLICATION)
É isso mesmo? Dessa forma esse objeto SEAM vai se único para toda a aplicação.

Bom, mude o nome do objeto e teste aí.

Brucelee

Funcionou! :smiley:

Era apenas o nome mesmo amigo, quem está de dentro fica tão preocupado que não enxerga esses detalhes. Muito obrigado.

Ps: Ah, o escopo é Application mesmo =)

Abraços!

Criado 4 de fevereiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 4
Participantes 2