Gente. estou preparando terreno para fazer alguns trabalhos de freelancer na minha região, e optei por usar uma framework MVC, e fazer os componentes com jQuery + tags jsp. O que eu queria saber é se vale a pena eu continuar fuçando o Struts ou se é mais interessante ir pro VRaptor, que faz praticamente o que eu queria fazer no Struts.
Explicando melhor, comecei fuçando o Struts 1.3 e usando os wildcards, mais umas configurações aqui e ali, mais uma superclasse pra gerenciar as actions, cheguei a uma simplificação que permite acessar métodos com uris amigáveis, por exemplo:
A URL http://localhost/checklist/person/edit/4
Acessa o método abaixo:
@ActionPath("edit")
public String getPersonToEdit(personForm form, String id,
HttpServletRequest req, PersonService ps) throws RemoteException{
if(ValidationUtils.isNumber(id)){
Person toEdit = new Person();
toEdit.setId(Long.parseLong(id));
toEdit = ps.get(toEdit);
if(toEdit.getId() != null && toEdit.getId() > 0){
form.setBean(toEdit);
return SUCCESS;
}else{
return FAILURE;
}
}else{
req.getSession().setAttribute(RequestKeys.ERROR_MESSAGE,
I18n.get(req.getLocale(), "messages.warn.invalidParameter"));
return FAILURE;
}
}
Que em caso de sucesso, acessa a /pages/person/edit.jsp. Infelizmente, pra fazer isso nos wildcards precisei abrir mão da boa prática dos nomes de classe - PersonAction passa a ser personAction… pra condizer com mapeamentos desse tipo:
<action name="{1}Form" path="/*/*/*" parameter="{3}" scope="request" type="checklist.action.{1}Action">
<forward name="success" path="/pages/{1}/{2}.jsp" />
<forward name="failure" path="/pages/{1}/{2}.failure.jsp" />
<forward name="list" path="/{1}/list" redirect="true" />
<forward name="main" path="/" redirect="true" />
</action>
Também acrescentei injeção de dependências nos métodos, por exemplo, o PersonService ps ali é populado com um ejb puxado por um service locator. Depois de um tempo alguns amigos me falaram do VRaptor, que fazia praticamente isso por padrão, e resolvi conhecer o bicho… achei muito interessante mesmo, e pelo que experimentei é bastante rápido, e não tem as falhas da minha configuração do struts, rsrsrs… fora que popula o id com o parâmetro da uri sem precisar fazer o que eu estava fazendo.
Mas enfim, agora fiquei meio indeciso, vale a pena ir pro VRaptor? O que posso fazer no Struts que não posso fazer nele… e vice-versa? Por favor, me ajudem…