Conversão de objetos entre classes[RESOLVIDO]

1 resposta
S

Olá pessoal.

Estou trabalhando em um módulo de meu projeto, onde ocorre o seguinte problema:

Estou querendo popular um <h:dataTable></h:dataTable> em minha view JSF, onde seleciono um dado de um lista já persistida em meu Entity Bean Assunto.java, e como tenho um contexto de conversação, tenho acesso ao action Listener public void armarzenarDSI().

Ao clicar em cadastre-se, o novo usuário insere os seu dados pessoais e seleciona em um menu os assunto nas quais ele quer receber informações via e-mail. Selecionando um assunto qualquer em uma lista, ao clicar no botão inserir, ele popula uma lista de assutos List assuntos que é um atributo de DSI.java. Segue abaixo trecho do código que eu implementei.

Código no JSF dsi_edit.xhtml

Seleciona assunto em um lista:

<h:selectOneMenu id=“assuntosMenu” value="#{assuntoCategoriaManager.assunto}">

<h:selectItem id="assuntoItem" value="#{assunto.nome} rendered="#{dsi.nome}"/>
</h:selectOneMenu>

<h:commandButton id=assunto value=Inserir action="#{usuarioManager.armazenarDSI(dsi.nome)}"/>


Segue o código do método que está no Managed Bean UsuarioManager.java

public void armazenarDSI(Assunto assunto){

//Set uma instância de Assunto passado pelo parâmetro do método
                 dsi.setAssunto(assunto)
                 //Se a lista de Assuntos de DSI for nula, então
                  if(dsi.getAssuntos() == null){
                     //Cria uma nova lista   
                     dsi.setAssuntos(new ArrayList<Assuntos>());


                  }

                   //Adiciona um assunto a List<Assunto> assuntos da classe DSI.java
                   dsi.getAssuntos().add(assunto);

}//fim do metodo

Tudo segue bem até aqui, não ocorre um exception por passar um valor, o que acontece é que ao clicar no botão inserir da view dsi_edit.xhtml, me imprime uma mensagem que traduzindo me diz que o tipo assunto da classe entity Assunto não pode ser convertido para um tipo da classe java.lang.Boolean.

Esse meu projeto utiliza JSF, JBoss Seam e server JBoss AS 5.0.1 GA

Alguém já pegou esse erro e como faço para resolver.

Qualquer ajuda é válida

Grato.

Marcelo

1 Resposta

S
Silveira.Marcelo:
Olá pessoal.

Estou trabalhando em um módulo de meu projeto, onde ocorre o seguinte problema:

Estou querendo popular um em minha view JSF, onde seleciono um dado de um lista já persistida em meu Entity Bean Assunto.java, e como tenho um contexto de conversação, tenho acesso ao action Listener public void armarzenarDSI().

Ao clicar em cadastre-se, o novo usuário insere os seu dados pessoais e seleciona em um menu os assunto nas quais ele quer receber informações via e-mail. Selecionando um assunto qualquer em uma lista, ao clicar no botão inserir, ele popula uma lista de assutos List assuntos que é um atributo de DSI.java. Segue abaixo trecho do código que eu implementei.

Código no JSF dsi_edit.xhtml

Seleciona assunto em um lista:
-------





.....

Segue o código do método que está no Managed Bean UsuarioManager.java

public void armazenarDSI(Assunto assunto){

//Set uma instância de Assunto passado pelo parâmetro do método
dsi.setAssunto(assunto)
//Se a lista de Assuntos de DSI for nula, então
if(dsi.getAssuntos() == null){
//Cria uma nova lista
dsi.setAssuntos(new ArrayList());

}

//Adiciona um assunto a List assuntos da classe DSI.java
dsi.getAssuntos().add(assunto);

}//fim do metodo

Tudo segue bem até aqui, não ocorre um exception por passar um valor, o que acontece é que ao clicar no botão inserir da view dsi_edit.xhtml, me imprime uma mensagem que traduzindo me diz que o tipo assunto da classe entity Assunto não pode ser convertido para um tipo da classe java.lang.Boolean.

Esse meu projeto utiliza JSF, JBoss Seam e server JBoss AS 5.0.1 GA

Alguém já pegou esse erro e como faço para resolver.

Qualquer ajuda é válida

Grato.

Marcelo

.....

Pessoal consegui resolver este problema simplesmente inserindo a linha de comando:
public void armazenarDSI(Assunto assunto){
		
		
		
		//obtem o valor do parametro passado pelo argumento dsi.nome da view dsi_edit.xhtml
		//configura o assunto a ser inserido na lista de Assuntos na Entity Bean DSI.java
		dsi.setAssunto(assunto);
		
		//Se a lista de Assuntos for nula, então
		if(dsi.getAssuntos() == null){
			
			//Configura uma nova lista a ser popula em DSI.java
			dsi.setAssuntos(new ArrayList<Assunto>());
		}
			//Adiciona um assunto na lista de Assunto adicionando
			//um registro da Entity Assunto.java
			dsi.getAssuntos().listIterator().add(assunto);
	}

Eu comento o código explicando tudo.

Um abraço comunidade.

Criado 18 de setembro de 2009
Ultima resposta 23 de set. de 2009
Respostas 1
Participantes 1