Struts - Problemas ao repassar dados de formBean para página

Pessoal, bom dia.

estou com o seguinte problema: Possuo um mesmo formBean, que é usado por duas telas. Ambas a telas se referenciam a este formBean com nomes diferentes. E é aí que reside o problema.

Possuo uma action chamada “cadastroAction” que recebe este formBean com o nome “cadastroForm”. Ele realiza as suas operações, e ao final faz um forward para uma página. Esta página possue declarado no action de seu form o action “manterCadastroAction”. Este action se referencia a este formulário pelo nome “manterForm”.

Acontece que o form que esta página recebe vem vazio. Se eu vou no mapeamento da action “manterCadastroAction” e coloco no método attribute o nome “cadastroForm”, igualando assim com o da action “cadastroAction”, funciona. Relembrando que o formBean é o mesmo, estando declarado uma única vez no struts-config. O que altera é o nome que dou a ele no método attribute de cada action.

Só que eu preciso referenciar-me a este formBean por nomes distintos nestas actions.

Existiria alguma forma de dizer ao Struts que apesar do nome ser diferente, o formBean é o mesmo e por isso seus dados não devem ser apagados?

Por que não criar 2 formBeans distintos?
Se são telas diferentes, devem ter forms diferentes

Não, não é possível, mas você pode copiar os dados de um pro outro.

[quote=andre_a_s]Por que não criar 2 formBeans distintos?
Se são telas diferentes, devem ter forms diferentes[/quote]

Apesar de serem telas distintas, em determinado momento elas compartilham informações. A tela de cadastro necessita manter alguns dados da tela de pesquisa, pois quando retornar para a tela de pesquisa estes dados deverão ser novamente exibidos. E é nesta hora que aparece o problema. O formBean está indo vazio.

E como eu faço para pegar (ou criar) a referência da nova instância do formBean e copiar para ele os dados da instância atual?

Pessoal, consegui resolver o problema :smiley:

Vou descrever aqui a solução, pois poderá ser útil para outras pessoas.

O que fiz foi o seguinte: Coloquei dentro da action que estava fazendo forward para a página, ao final de todas as operações, o seguinte código:

request.setAttribute(“manterCadastroForm”, form);
mapping.setAttribute(“manterCadastroForm”);

Simples, não? Bastou adicionar no request um novo atributo com o nome pelo qual o formBean é referenciado em “manterCadastroAction”, que está setado no action do form da página que desejo exibir.
Depois, modifiquei no mapping o nome do formBean, de “cadastroForm” para
“manterCadastroForm”.

Agora a página de destino está exibindo os dados corretamente 8)

Pessoal, muito obrigado pela ajuda. Foi através de suas dicas que consegui caminhar em direção a solução.

Caio,

estou com o mesmo problema que vc enfrentou. Eu vi a sua solução porém não consigo em minha aplicação:

	request.setAttribute("CondominoForm", form);  
	mapping.setAttribute("CondominoForm");		

mas sempre ocorre o erro:

java.lang.IllegalStateException: Configuration is frozen
org.apache.struts.config.ActionConfig.setAttribute(ActionConfig.java:179)

Você, ou alguém aqui da comunidade saberia me dizer o que poderia estar causando este erro?

Desde já obrigado a todos.