Olá Robinson, obrigado pela resposta.
Na verdade, a coleção está dentro de um form, inicialmente a coleção está vazia:
public class OrderEditForm extends ActionForm {
private Produto[] colecao = new Produto[0];
....
}
Então, a seguinte ação é executada quando carrego a página pela primeira vez:
OrderEditForm orderEditForm = new OrderEditForm();
orderEditForm.reset(mapping, request);
HttpSession httpSession = request.getSession();
httpSession.setAttribute(“orderEditForm”, orderEditForm);
Desta forma, a coleção vazia é carregada na session.
A página possui um botão que ao ser clicado executa uma ação que faz o seguinte:
1 - se a coleção está vazia, carrega os objetos na coleção com um valor qualquer. Na verdade, ainda não tem acesso ao banco nesta parte ainda. Estou apenas testando o retorno dos valores da coleção.
2 - se a coleção não for vazia, lista o conteúdo dos objetos.
O botão executa a seguinte ação:
HttpSession httpSession = request.getSession();
// retorna o form
OrderEditForm orderEditForm = (OrderEditForm)httpSession.getAttribute(“orderEditForm”);
// 1 - se o form não existe na sessao, cria um novo e carrega a colecao com 5 objetos
// somente passa por aqui uma vez
if (orderEditForm.getColecao().length == 0){
orderEditForm = new OrderEditForm();
Produto[] colecao = new Produto[5];
Produto prod;
for (int i = 0; i < colecao.length; i++){
prod = new Produto();
prod.setCodigo(i);
prod.setDescricao("PRODUTO " + i);
colecao[i] = prod;
}
orderEditForm.setColecao(colecao);
httpSession.setAttribute("orderEditForm", orderEditForm);
}
// 2 - caso o form já exista na sessão, recupera a coleção que está armazenada no form.
// Aqui está o problema, quando eu altero o valor de um campo da tela no formulário
// o valor de prod.getDescricao() é sempre o mesmo, ou seja, não retorna o que eu digitei no browse.
Produto[] colecao = orderEditForm.getColecao();
for (int i = 0; i < colecao.length; i++) {
Produto prod = (Produto)colecao[i];
System.out.println("Descricao do produto: " + prod.getDescricao());
}
Alguma outra sugestão ?
Obrigado
Marcos