[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 
como preencher comboBox que depende de outro comboBox na edição do registro.  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
guilherme.pimentel
Template
[Avatar]

Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline

Eu fiz uma tela de entrada que tem o combo1 que depende da seleção de outro combo que seria o combo2. Apos a seleção do item no combo2 o combo1 é carregado, porem quando eu edito o valor não é setado pois não foi selecionado nenhum item do combo2 logo não tem nenhum item no combo1 para que o FrameWork faça a seleção do item deacordo com o valor que esta no bean.

Em que momento eu posso setar o valor do combo2 para que os valores do combo1 sejam listados e o FrameWork possa fazer a seleção deacordo com o dado do bean.

Um exemplo desse problema:
Eu tenho 3 entidades Seção, Item e SubItem, para fazer o cadastro de SubItem eu preciso selecionar a Seção, o itens da seção aparecem em outro combo para que o item seja selecionado, como o a Seção não faz parte do SubItem ao editar o registro o combo referente ai item esta vazio pois nenhuma seção foi selecionada logo não existe nenhum item para ser exibido.

A pergunta é o seguinte onde eu coloco o codigo para que esses combos sejam preenchidos automaticamente??

GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Guilherme, dentro do crud controller tem um método chamado carregar, sobrescreve ele e faça algo mais ou menos assim:


NomedoBean nomedobean= super.carregar(request,bean);

nomedobean.setAlgo1(nomedobean.getAlgo().getMaster());

return nomedobean;
 


Entendeu?

Posta o seu código ai que fica mais fácil.

[]'s

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Uma outra forma de fazer isso é utilizar subpropriedades dos seus beans. Exemplo
Code:
 class Principal {
       SubItem subItem;
       // getters e setters
 }
 
 class SubItem {
     Item item;
     //getters e setters
 }
 
 class Item {
    Sessao sessao;
    //getters e setters
 }
 
 class Sessao {
    // getters e setters
 }
 

Se você estiver fazendo a tela de Principal por exemplo voce pode utiizar

Code:
 <n:comboReloadGroup useAjax="true">
       <t:property name="subItem.item.sessao">
       <t:property name="subItem.item">
       <t:property name="subItem">
 </n:comboReloadGroup>
 


Quando voce editar o principal todos os combos estarão carregados.

Nesse caso cada entidade tem que ser uma referencia para a outra (@ManyToOne) voce deve fazer DAOs para todas elas.

Sobrescreva o método updateEntradaQuery do PrincipalDAO para fazer join (fetch) com item e sessao (o NEO carrega os beans se eles não estiverem carregados do banco mas não é recomendável já que várias consultas ao banco seriam necessárias. Se performance não é um problema muito importante voce pode querer nao sobrescrever o updateEntradaQuery)

Na versão 3.3.14 você terá que verificar se o subItem possui id antes de salvar o principal. Isso porque se estiver selecionada uma Sessao voce terá um principal com um subItem que tem um Item que tem uma Sessao. Mas o subItem nao terá chave (id) se nenhum subItem tiver sido selecionado. O Hibernate soltará uma exceção TransientObjectException caso o subItem nao receba o tratamento necessário. Se o subItem for obrigatório não terá nenhum problema.

Na versão 3.3.15 se nenhum subItem tiver sido selecionado o subItem será nulo. Então não terá problemas com o Hibernate
guilherme.pimentel
Template
[Avatar]

Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline

Com essa segunda solução ficou perfeito. Gostaria de saber tambem se tem como eu mostrar ao lado de um subcombo que não foi encontrado nenhuma ocorrencia quando um item é selecionado no combo principal e não existe nenhum subitem para o selecionado.Tem jeito???

GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Você pode fazer o seguinte:

Vamos supor o seguinte combo:

Code:
      <t:property name="subItem.item">
 


Existe um evento Javascript que é disparado pelo combo ajax, quando os itens chegam do servidor, esse evento é o onLoadItens. O código ficaria assim:

Code:
 
 <t:property name="subItem.item" 
     onLoadItens="if(this.options.length ==1){document.getElementById('infor').innerHTML = 'Nenhum item encontrado';} else {document.getElementById('infor').innerHTML =''}}">
 
 


Se estiver dentro de um panelGrid com 2 colunas e desejar que a mensagem fique ao lado do controller você deve fazer o seguinte código:

Code:
      <n:panel>Item</n:panel>
      <n:panel>
            <t:property name="subItem.item" ....>
            <span id="infor"></span>
      </n:panel>
 


Todos os templates que são tabelas no NEO utilizam panelGrids. Então, se desejar que vários componentes fiquem no mesmo TD é só englobá-los numa tag n:panel
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team