Dúvida Struts 1  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
joca_java
JavaChild
[Avatar]

Membro desde: 16/08/2007 14:02:09
Mensagens: 128
Offline

E ae pessoal blz?

Gostaria de saber se alguém poderia me ajudar com um problema:

Seguinte:

digamos que eu tenha uma classe pessoa que possui os atributos cpf e nome certo?
Na minha página, estou usando um "logic:iterate" pra percorrer uma lista de pessoas e mostrar em um "html:text"
seus respectivos cpf´s e nomes. O fato de estar em um "html:text", é porque eu poderia alterar o número do cpf e o nome
se for o caso. Antes de entrar na página, seto no request minha lista e percorro com o iterate. Mas após executar a ação pra
"gravar", não consigo pegar no form essa lista alterada. Alguém tem alguma idéia como poderia ser feito isso?

Abaixo o código do meu iterate na página:


Não sei se estou fazendo da maneira correta... quando eu tento pegar a lista, através do form, ela está vindo vazia

Alguém tem alguma idéia???

Obrigado!
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

Seguinte: quando vc entra na pagina, voce carrega a lista e seta no request. Digamos que esse metodo na sua action é o "load". Apos o foward vc é cai na pagina e ve a lista carregada. Faz suas alteracoes aciona salvar. Salvar cai num metodo da sua action, digamos "save" que salva e retorna sucesso para a pagina novamente. Nesse momento vc perdeu a lista. No struts 2 existe um metodo que chama prepare(), que é onde vc faz o carregamento das listas, e todo metodo que é acionado, o prepare é invocado antes. No struts 1 nao existe esse metodo mas vc pode cria-lo para que toda invocacao em sua action, carregue suas listas.

Veja, quando voce salvou, e redireicionou novamente pra pagina, o request é outro, entao vc perdeu a lista. Nesse momento vc precisa carrega-la novamente, ou seja, fazer a busca no banco dinovo, ou entao usar sessao. Entenda os momentos, o request é um diferente por submissao.

Espero ter ajudado. Abraco.

Sun Certified Java Programmer 5
joca_java
JavaChild
[Avatar]

Membro desde: 16/08/2007 14:02:09
Mensagens: 128
Offline

muldon wrote:Seguinte: quando vc entra na pagina, voce carrega a lista e seta no request. Digamos que esse metodo na sua action é o "load". Apos o foward vc é cai na pagina e ve a lista carregada. Faz suas alteracoes aciona salvar. Salvar cai num metodo da sua action, digamos "save" que salva e retorna sucesso para a pagina novamente. Nesse momento vc perdeu a lista. No struts 2 existe um metodo que chama prepare(), que é onde vc faz o carregamento das listas, e todo metodo que é acionado, o prepare é invocado antes. No struts 1 nao existe esse metodo mas vc pode cria-lo para que toda invocacao em sua action, carregue suas listas.

Veja, quando voce salvou, e redireicionou novamente pra pagina, o request é outro, entao vc perdeu a lista. Nesse momento vc precisa carrega-la novamente, ou seja, fazer a busca no banco dinovo, ou entao usar sessao. Entenda os momentos, o request é um diferente por submissao.

Espero ter ajudado. Abraco.


oi muldon... obrigado pela ajuda... talvez não tenha me expressado direito:

Eu altero a lista a aciono meu método para "salvar" certo?

Então, no método salvar tem um breakpoint pra eu ver o que tem na lista... só que quando olho, a lista está vazia entende?
Tô usando form dinâmico... e antes de entrar na página instancio umas 4 pessoas pra setar na lista (no request) pra poder realizar os testes.
A lista aparece certinha... mas aí quando altero a lista na página, e dou um dynaActionForm.get("listaPessoa"), a lista está vazia.

Isso observando o breakpoint na minha action...

Valeu!

muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

joca_java veja bem,
se eu entendi bem, vc quer entao modificar a lista na pagina e salva-la é isso ? Bixo, nao tem com fazer isso do jeito que vc quer.
1- Voce carrega a lista e mostra na pagina
2- Voce quer modificar os elementos dessa lista
3- Salvar as modificacoes

Voce precisara fazer um controle elemento a elemento, e o recomendado é usar a displayTag pra isso ( veja documentacao ). Veja como é o controle nos sistemas atuais de listas de elementos nas paginas. O controle é feito um a um, ou seja, vc quer alterar um registro, vc edita ele , e salva aquele registro, e nisso ao salvar a aplicacao submete o formulario que volta com a lista atualizada pois faz uma nova consulta no banco. Entenda, a lista "morreu" no momento que vc carregou ela e disponibilizou na pagina. Ela nao é um bean que vc pode ficar atualizando quando quiser ( pelo menos nao ainda nos frameworks atuais, struts 1 e 2 ).

Entendeu ?

Abraco !

Sun Certified Java Programmer 5
joca_java
JavaChild
[Avatar]

Membro desde: 16/08/2007 14:02:09
Mensagens: 128
Offline

muldon wrote:joca_java veja bem,
se eu entendi bem, vc quer entao modificar a lista na pagina e salva-la é isso ? Bixo, nao tem com fazer isso do jeito que vc quer.
1- Voce carrega a lista e mostra na pagina
2- Voce quer modificar os elementos dessa lista
3- Salvar as modificacoes

Voce precisara fazer um controle elemento a elemento, e o recomendado é usar a displayTag pra isso ( veja documentacao ). Veja como é o controle nos sistemas atuais de listas de elementos nas paginas. O controle é feito um a um, ou seja, vc quer alterar um registro, vc edita ele , e salva aquele registro, e nisso ao salvar a aplicacao submete o formulario que volta com a lista atualizada pois faz uma nova consulta no banco. Entenda, a lista "morreu" no momento que vc carregou ela e disponibilizou na pagina. Ela nao é um bean que vc pode ficar atualizando quando quiser ( pelo menos nao ainda nos frameworks atuais, struts 1 e 2 ).

Entendeu ?

Abraco !


Huum... beleza Muldon... vou dar uma pesquisada pra ver como resolvo este meu problema. Valeu cara!

Abraço!
noslei
Smalltalk
[Avatar]

Membro desde: 29/07/2008 13:43:07
Mensagens: 1
Offline

Cara, você conseguiu resolver, to com o mesmo problema
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team