Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/06/2007 17:22:34
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Eu fiz um combo box statico que funciona direitinho na entrada de dados porem na listagem ele mostra o valor interno por exemplo
I Interrado
O OK
No combo da entrada de dados aparece certinho o "OK" pro exemplo porem na listagem aparece somente o "O" pois foi o valor que foi gravado no banco de dados como é que eu faço pelo FrameWork para que seja exibido a descrição referente ao valor do banco???
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/06/2007 18:54:51
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Eu não entendi a dúvida guilherme, teria como ser mais específico? posta o código do seu bean e também do seu jsp de entrada/saída.
té!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2007 08:34:06
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Na classe do crud eu criei um lista com os itens estaticos de um combo box:
Code:
public ModelAndView doEntrada(WebRequestContext request, NivelPiezometro form) throws CrudException {
Hashtable<String, String> hashtable = new Hashtable<String, String>();
hashtable.put("I","Interditado");
hashtable.put("D","Destruído");
hashtable.put("E","Entupido");
hashtable.put("O","Ok");
request.setAttribute("listaStatus", hashtable);
return super.doEntrada(request, form);
}
na entrada de dados na propriedade que vai virar o combo eu coloquei esse parametro e funcionou:
Code:
<t:property name="status" itens="${listaStatus}"/>
porem na listagem quando eu crio um novo registro e o sistema vai para a listagem o valor do campo não fica a descrição e sim o codigo interno que foi gravado no banco como por exemplo, quando eu escolho "Interditado" na listagem aparece "I" como é que eu faço para que ao inves do "I" ele apareça "Interditado"??????
No aguardo,
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2007 08:50:36
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Guilherme, primeiro ponto que quero lhe chamar a atenção é que o método que deve ser extendido é o entrada(WebRequest....)
Code:
@Override
protected void entrada(WebRequestContext request, Bean bean) throws Exception {
}
o doEntrada tem a função apenas de mandar para o jsp correto em cada situação, no caso a entrada de dados.
O problema da listagem é o seguinte.. você pode fazer e sobrescrever o getLista e alterar a lista que vai para o datagrid. assim:
Code:
protected ListagemResult<Bean> getLista(WebRequestContext request, FiltroListagem filtro) {
ListagemResult<Bean> result = super.getLista(request, filtro);
List<Bean> list = result.list();
for (Bean bean : list) {
//carrega aqui os dados
}
return result;
}
Ai no seu caso seria ideal que você colocasse esse hash map no service do seu bean e depois carregasse..
primeiro você poe o service na action assim:
Code:
protected BeanService beanService;
public void setBeanService(BeanService beanService){
this.beanService = beanService
}
cria um método dentro do seu BeanService:
Code:
public Hashtable<String, String> getListaAlgumaCoisa(){
Hashtable<String, String> hashtable = new Hashtable<String, String>();
hashtable.put("I","Interditado");
hashtable.put("D","Destruído");
hashtable.put("E","Entupido");
hashtable.put("O","Ok");
return hashtable;
}
ai voltando a sua action faz assim:
Code:
protected ListagemResult<Bean> getLista(WebRequestContext request, FiltroListagem filtro) {
ListagemResult<Bean> result = super.getLista(request, filtro);
List<Bean> list = result.list();
for (Bean bean : list) {
bean.setPropriedade(beanService.getListaAlgumaCoisa().get(bean.getPropriedade()));
}
return result;
}
e no entrada você muda para
Code:
@Override
protected void entrada(WebRequestContext request, Bean bean) throws Exception {
request.setAttribute("listaStatus", beanService.getListaAlgumaCoisa());
}
entendeu???
[]'s
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2007 09:20:29
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Perfeito, muito obrigado!!!!!!
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2007 09:22:25
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
Guilherme, você pode no método getLista algo do tipo
Code:
ListagemResult<Bean> result = super.getLista(request, filtro);
List<Bean> list = result.list();
for (Bean bean : list) {
if("o".equals(bean.getValor()){
bean.setValor("Ok");
}
...
}
Para o modo output não é possível utilizar um map e o NEO fazer a tradução automática como no caso do combo. Mas isso é interessante e vou adicionar essa funcionalidade numa versão futura.
Uma outra possibilidade é alterar o JSP
Code:
<t:tabelaResultados>
<t:property name="..."/>
<n:column header="titulo">
<c:if test="${nomeDoBean.valor == 'O'}">Ok</c:if>
<c:if test="${nomeDoBean.valor == 'I'}">Interrado</c:if>
</n:column>
</t:tabelaResultados>
No nomeDoBean você coloca o nome da classe do bean com a primeira letra minúscula.
Se estiver utilizando um dataGrid diretamente utilize row (ou configure o atributo var do dataGrid para indicar com qual nome o bean estará no escopo)
Uma outra forma ainda é criar um Enum
Code:
public enum Tipo {
OK, INTERRADO
}
Será impresso na tela OK e INTERRADO, mas no banco será salvo um int.
Você pode mudar o valor impresso sobrescrevendo to toString do enum.
Code:
public enum Tipo {
OK, INTERRADO;
@Override
public String toString() {
switch(this){
case OK: return "Ok";
case INTERRADO: return "Interrado";
}
return super.toString();
}
}
}
|
|
 |
|