Para tratar estes comandos, o código fonte da ListaClientesAction ficou assim:
package clientesPack; import java.util.List; public class ListaClientesAction { private List<Cliente> clientes; private String comando = null; private String id = null; public String execute() throws Exception { boolean result = false; ClienteDao dao = null; if (comando != null) { if (comando.equals("Novo")) { return "novo"; } else if (comando.indexOf("Editar") == 0) { id = comando.substring(6); return "editar"; } else if (comando.indexOf("Excluir") == 0) { id = comando.substring(7); return "excluir"; } } try { dao = new ClienteDao(); clientes = dao.carregaClientes(); result = true; } finally { if (dao != null) dao.close(); } if (result) return "success"; return "error"; } public String getId() { return id; } public void setId(String id) { this.id = id; } public List<Cliente> getClientes() { return this.clientes; } public void setFiltro(String filtro) { this.filtro = filtro; } public String getFiltro() { return filtro; } public void setComando(String comando) { this.comando = comando; } public String getComando() { return comando; } }
Repare que a action ganhou 2 atributos: id e comando. Comando contém um identificador para indicar para qual action será redirecionado, id contém o valor do registro que deverá ser alterado ou excluído.
Os códigos de retorno do método execute são: novo, editar, excluir, success e erro. Através destes códigos de retorno, o redirecionamento é mapeado em struts.xml.