[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Duvida para carregar os atributos das combos  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Pessoal, boa tarde,

Minha aplicação possui uma classe PessoaFisica, que não é uma entidade, mas está anotado com @Bean. Nesta classe possuo outras entidades, como Uf e Sexo.

Ao dar o submit no formulário, o objeto PessoaFisica está vindo só com os id's das entidades. Gostaria que viesse também o descriptionProperty da combo, só pra gerar o relatório, tem jeito?

É pq são muitas entidades, e pra ficar dando load em todas, fica inviável. Grato.
rodrigo.freitas
Equipe
[Avatar]
Membro desde: 17/04/2007 16:43:33
Mensagens: 37
Localização: Belo Horizonte - MG
Offline

André,

acho que desse jeito que você quer fazer não tem jeito não...

Mas essas tabelas são estáticas no BD?

Se for estáticas você pode colocar constantes que representam esses registros estáticos...

Code:
 
 public static Sexo MASCULINO = new Sexo(1,"Masculino");
 
 public Sexo(){}
 	
 public Sexo(Integer sexo_id, String descricao){
    this.sexo_id = sexo_id;
    this.descricao = descricao;
 }
 
 


Aí você sobrescreve o equals e compara Id que chegar no Bean PessoaFísica...

Code:
 @Override
 public boolean equals(Object obj) {
 	if (obj instanceof Sexo) {
 		Sexo sexo= (Sexo) obj;
 		return sexo.getSexo_id().equals(this.getSexo_id());
 	}
 	return super.equals(obj);
 }
 


Deu pra ajudar em algo?

Qualquer dúvida é só falar...

Rodrigo Duarte de Freitas
Desenvolvedor de Sistemas
LinkCom - Soluçoes em T.I
Belo Horizonte - MG
rodrigo.freitas@linkcom.com.br - www.linkcom.com.br
Telefone/Fax: (31) 3239-4000
[Email] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Elas são estáticas sim, meu problema é que eu tento automatizar tudo kkkkkk.

Eu configurei o método getDescricao pra carregar o bean no banco se o id não for null. Assim, quando o relatório chamar a descricao, o bean é recarregado e a descricao é retornada.

Valew pela dica.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Cara.. Você pode utizar de enum's também.. Fica mais automático.

Te interessa??

Olhe:

Exemplo Enum
Code:
 package br.com.ecom.bean.enumeration;
 
 public enum CategoriaCliente {
 	
 	ATACADO		("Atacado"),
 	VAREJO		("Varejo"),
 	ESPECIAL	("Especial");
 
 	private String descricao;
 	
 	CategoriaCliente(String descricao){
 		this.descricao = descricao;
 	}
 
 	@Override
 	public String toString() {
 		return descricao;
 	}
 	
 	public String getName(){
 		return name();
 	}
 	
 }
 


Code:
 package br.com.ecom.bean;
 
 import javax.persistence.Entity;
 import javax.persistence.Transient;
 
 import br.com.ecom.bean.enumeration.CategoriaCliente;
 import br.com.ecom.bean.enumeration.UF;
 import br.com.linkcom.neo.bean.annotation.DisplayName;
 import br.com.linkcom.neo.types.Cep;
 import br.com.linkcom.neo.types.Cnpj;
 import br.com.linkcom.neo.types.Cpf;
 import br.com.linkcom.neo.validation.annotation.MaxLength;
 import br.com.linkcom.neo.validation.annotation.MinLength;
 import br.com.linkcom.neo.validation.annotation.Required;
 
 @Entity
 public class Cliente extends Usuario {
 	
 	...
 
 	protected CategoriaCliente categoriaCliente;
 
         ...
 
 
 	@Required
 	@DisplayName("Categoria")
 	public CategoriaCliente getCategoriaCliente() {
 		return categoriaCliente;
 	}
 	
         ...
 
 	public void setCategoriaCliente(CategoriaCliente categoriacliente) {
 		this.categoriaCliente = categoriacliente;
 	}
 	
         ...
 }
 


Na sua tela, basta usar: <t:property name="categoriaCliente"/>

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Pedro, tentei fazer com enums mas não consegui, pq algumas chaves tem o valor numerico, e java não aceita identificador numerico como nome das variáveis. Tbm tentei trocar de posição com a descrição mas tbm não deu certo pq algumas descrições iniciam com valores numericos.

Tem alguma outra forma de criar essas combos constantes?
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Eu não entendi essa de ter nome como numérico..

teria como explicar melhor?

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Por exemplo, tentei fazer o enum GrauIntrucao

Code:
  public enum GrauIntrucao {
 
       001           ("1 GRAU INCOMPLETO"),
       002           ("1 GRAU COMPLETO"),
       003           ("2 GRAU INCOMPLETO");
 
  
  	private String descricao;
  	
  	GrauIntrucao(String descricao){
  		this.descricao = descricao;
  	}
  
  	@Override
  	public String toString() {
  		return descricao;
  	}
  	
  	public String getName(){
  		return name();
  	}
  	
  }
 


No meu banco, as chaves são os valores 001, 002, 003. Neste caso, o java não aceita esses valores como um identificador. Também não consigo colocar a descrição como identificador, pq elas iniciam com numero. Sinuca de bico =)

É a primeira vez que estou usando enums tbm. Pode ser que tenha uma outra forma de contornar este problema com enums, mas eu não sei.

Grato.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Ai o problema complicou..

pois a idéia de constante é ter um nome para identificar um número (Similares). Quando utiliza ENUM, o que é salvo no banco de dados é o valor ordinal do enum, ou seja a ordem que está declarado. Acredito que para o que você precisa, o ideal e alterar o seu banco.

E mudasse as constates para algo do tipo: PRIMEIRO_GRAU("lalala")

entendeu?

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team