Pessoal,
estou usando um MultiActionController para executar algumas actions de crud em um formulário.
O problema que meu metódo nao consegue resolver o objeto JSON que estou passando para ele como parametro. Vejam:
Controller:
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException;
import br.com.enginex.notifyme.domain.Email;
import br.com.enginex.notifyme.domain.Endereco;
import br.com.enginex.notifyme.domain.Telefone;
import br.com.enginex.notifyme.domain.Usuario;
public class CadastroComplementarController extends MultiActionController {
private HashMap<String, String> clazzStrMap;
private String clazzStr;
protected ModelAndView handleAll(HttpServletRequest request, HttpServletResponse response) throws Exception {
Usuario usuario = (Usuario) request.getSession().getAttribute("usuario");
String entityStr = ServletRequestUtils.getStringParameter(request, "entityStr").toLowerCase();
int index = ServletRequestUtils.getIntParameter(request, "index");
Object object = request.getParameter("obj");
logger.debug(object);
clazzStr = clazzStrMap.get(entityStr);
Class<?> clazz = null;
try {
clazz = Class.forName(clazzStr);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object instanceOfClazz = BeanUtils.instantiateClass(clazz);
if (instanceOfClazz instanceof Email) {
Email email = null;
usuario.getEmails().set(index, email);
}
if (instanceOfClazz instanceof Endereco) {
usuario.getEnderecos().add((Endereco) instanceOfClazz);
}
if (instanceOfClazz instanceof Telefone) {
usuario.getTelefones().add((Telefone) instanceOfClazz);
}
return new ModelAndView("ajax_addCadastroCompl", "obj", instanceOfClazz);
}
public ModelAndView save(HttpServletRequest request, HttpServletResponse response)
throws ServletRequestBindingException {
return null;
}
public HashMap<String, String> getClazzStrMap() {
return clazzStrMap;
}
public void setClazzStrMap(HashMap<String, String> clazzStrMap) {
this.clazzStrMap = clazzStrMap;
}
public String getClazzStr() {
return clazzStr;
}
public void setClazzStr(String clazzStr) {
this.clazzStr = clazzStr;
}
}
JavaScript
function ajax_addCadastroComplCrudActions() {
$('.editSave').click(cadastroComplCrudActions.editSave);
}
var cadastroComplCrudActions = {
addRemove : function() {
$('#cadastroComplActionParam').val($(this).attr('title'));
$(this).parents().filter('form').submit();
return false;
},
editSave : function() {
var anchor = this;
var index = $('.editSave').index(anchor);
var obj = $('.editSave').eq(index).parents().filter('fieldset').serializeArray();
//debug
console.log({ tipo: obj['usuarioForm.usuario.emails[' + index + '].tipo'], endereco: obj['usuario.emails[' + index + '].endereco'] });
$.post('cadastroCompl.html', {
action : 'edit',
entityStr : anchor.title,
index : index,
obj : obj
}, function(data) {
alert(data);
}, 'json');
return false;
}
};
Já tenntei algumas alternativas como implementar um method resolver para o JSON, mas tb nao consegui.
Estou usando Spring nao anotado, 2.5.6.
Muito Obrigado pela ajuda.