Sempre programei pra web e agora estou me aventurando a programar algumas aplicações desktop. Na web usava o WebWork pra fazer os sites, com isso já conheço o XWork já tem um tempinho. Sabendo que o XWork pode ser usado em aplicações Swing eu comecei a estudar isso e já dei alguma avançada.
Eu já consegui fazer funcionar as actions usando ModelDriven mas não sei se estou fazendo do melhor jeito. Aqui vai um exemplo de como estou executando uma action ao clicar num botão:
...
JButton btInserir = new JButton("Inserir");
btInserir.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Map mapt = new HashMap();
mapt.put("nome", "Joaquim");
mapt.put("sobreNome", "Manuel");
Map map = new HashMap();
map.put(ActionContext.PARAMETERS, mapt);
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy("default","PessoaSave", map);
String result = proxy.execute();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
);
...
Está funcionando, mas é isso mesmo? Estou fazendo besteira? Tem maneiras melhores de se fazer isso?
A minha dúvida é na passagem dos parâmetros. É assim mesmo? Fazendo 2 Maps?
2 maps sim pq o contexto da action tem mais coisas alem dos parametros …
o caminho é esse, mas talvez vc deva estudar um modo de abstrair e desacoplar um pouco mais sua view … tipo, soh monta o mapa de parametros e passa a bola pra outro montar o contexto e chamar a action … com isso mais pra frente vc consegue colocar componentes na action, escopos, e outras coisitas.
Executar as actions clicando em botão é fácil. Mas eu tava pensando em como o XWork pode me ajudar a, por exemplo, preencher JComboBox, JTables e JLists na tela do programa.
Pensei em algumas soluções. Uma delas é fazer um result-type do XWork pra percorrer um Panel, achar os components lá dentro e preencher com os valores vindo da action.
Alguém tem outra sugestão? Acha que essa é a melhor maneira?
Perguntar não ofende: não existe um WebWork pra Swing?