| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/06/2006 23:16:48
|
renatop
Thread.start()
Membro desde: 11/10/2004 14:51:55
Mensagens: 39
Localização: São Paulo
Offline
|
Ola,
Estou com o seguinte problema utilizando um html:select no struts.
Quando o usuário efetua o "submit" de um form, o meu action chama um ejb que faz algumas validações, e quando acontece alguma exceção de negócio, eu solicito ao usuário informar novamente determinado campo.
Os campos de texto o STRUTS mantém preenchidos, porém, tenho uma lista "html:select", que é um atributo e esta configurado no struts-config.xml como java.lang.String[], que volta em BRANCO, ou seja, o STRUTS não esta mantendo o campo preenchido.
Alguém sabe se é um bug do STRUTS, ou se estou fazendo alguma coisa errada ?
Obrigado
Renato.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2006 08:45:34
|
julianostr
GUJ Ranger
![[Avatar]](/images/avatar/ca7e09eacf1ae34bc819d495c5adfed9.jpg)
Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline
|
A sua tag <html:select> também é formada pela tag <html:options> certo? Como você está utilizando-a?
No meu projeto utilizamos da seguinte maneira:
Se existe a estrutura conjDadosTipoCnsult (ArrayList de HashMap) na sessão então "varre" ela e monta a comboBox, senão é exibido uma mensagem de erro já cadastrado em arquivo.
|
LASER
Light Amplification by Stimulated Emission of Radiation |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2006 10:47:07
|
renatop
Thread.start()
Membro desde: 11/10/2004 14:51:55
Mensagens: 39
Localização: São Paulo
Offline
|
Julianostr,
Na realidade, o meu html:select não é um combo, e sim uma lista, que esta sendo alimentada via javascript, entendeu ? Os dados não vem do banco, esta lista é alimentada por um javascript conforme o usuário informa um outro campo e clica em adicionar, entendeu ? Nesse html:select não tem option, pois estou utilizando ele como se fosse uma lista.
Será que eu tenho que jogar o dado no request ou sessão para depois recupera-lo na página ?
Putz, seria muita gambiarra....
Renato.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2006 10:58:45
|
julianostr
GUJ Ranger
![[Avatar]](/images/avatar/ca7e09eacf1ae34bc819d495c5adfed9.jpg)
Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline
|
Tente fazer o seguinte. Antes de submeter você seta a propriedade selected=true de todas as linhas da sua lista "para forçar" a submissão dos campos.
Depois verifique o conteúdo do seu campo String[] lá na action e veja se as opções selecionadas "na marra" estão dentro do array.
|
LASER
Light Amplification by Stimulated Emission of Radiation |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2006 22:43:59
|
renatop
Thread.start()
Membro desde: 11/10/2004 14:51:55
Mensagens: 39
Localização: São Paulo
Offline
|
Já fiz isso, pois se os dados não estiverem com selected=true, ele não popula o array de string. Ele esta populando corretamente... porém, quando volta para a tela, volta em branco....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 08:49:34
|
julianostr
GUJ Ranger
![[Avatar]](/images/avatar/ca7e09eacf1ae34bc819d495c5adfed9.jpg)
Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline
|
Bom, faz um tempo que não uso Struts, mas vamos lá....
Se pra funcionar o <html:select> no estilo combobox é necessário utilizar as options, faça isso agora também.
Mantenha a tag <html:select>, e as tags <html:optios> você só usa se realmente existir uma estrutura na sessão.
Então, lá na action, antes de dar um forward, você lê o array e cria uma estrutura de ArrayList e salva na sessão.
No jsp você verifica se essa estrutura existe na sessão e usa as tags options que lerão o que você populou. Se você não fizer isso é certo que nada aparecerá por que não tem de onde tirar os valores pois após a submissão, na volta pro JSP, nada está alimentando sua lista na tela.
Exemplo:
<html:select property="pIndCampo">
<logic:present name="conjDadosIndCampo">
<html:options collection="conjDadosIndCampo" property="campo valor" labelProperty="campo descricao" />
</logic:present>
</html:select>
Aqui o exemplo está na sessão mas acho que você poderia colocar na requisição.
Foi isso que eu entendi. Dá uma estudada aí na tag <html:select> e veja como usar seus tipos, com certeza alguma coisa é de serventia. E gambiarra e Struts comvivem juntos, já tive que pedalar junto com alguns colegas aqui pra fazer funcionar certas estruturas.
|
LASER
Light Amplification by Stimulated Emission of Radiation |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 11:16:29
|
renatop
Thread.start()
Membro desde: 11/10/2004 14:51:55
Mensagens: 39
Localização: São Paulo
Offline
|
Julianostr,
Valeu, funcionou .... o único problema é que tenho que sempre retornar para e mesma página, exibindo a mensagem de erro, pois estou colocando no "request". Daria para colocar na sessão, o problema é que aí vou ter que ficar controlando ...
Mas já resolveu o meu problema !
Obrigado
Renato.
|
|
|
 |
|
|