我有这个 bean :
public class RespuestaForm {
private List<RespuestaUsuario> respuesta;
private List<Pregunta> pregunta;
private Long pinId;
public RespuestaForm() {
}
public RespuestaForm(List<Pregunta> pregunta, Long pinId) {
this.pregunta = pregunta;
this.pinId = pinId;
}
public List<RespuestaUsuario> getRespuesta() {
return respuesta;
}
public void setRespuesta(List<RespuestaUsuario> respuesta) {
this.respuesta = respuesta;
}
public List<Pregunta> getPregunta() {
return pregunta;
}
public void setPregunta(List<Pregunta> pregunta) {
this.pregunta = pregunta;
}
public Long getPinId() {
return pinId;
}
public void setPinId(Long pinId) {
this.pinId = pinId;
}
}
我想将 RespuestaForm 类型的对象从我的 View 传递到 Controller ,所以这就是我在 jsp 中所做的事情:
function verificarRespuestasAjax(pregunta, pinId, respuesta, index, array){
var respuestas ={ "pinId":pinId,
"respuesta": [
{"pinId": pinId, "respuesta": "prueba", "preguntaId": pregunta},
{"pinId": 3, "respuesta": "Hola", "preguntaId": pregunta}
]};
$.getJSON("../usuarios/comparar_respuestas_JSON", {respuestas: respuestas}, function(verifRespuestas){
if(verifRespuestas){
## etc...
});
}
这是 Controller 中的方法:
@RequestMapping(value="/usuarios/comparar_respuestas_JSON")
public @ResponseBody boolean compararRespuestas(@RequestBody RespuestaForm respuestas){
try{
//here I should get the object RespuestaForm
}catch(Exception e){
e.printStackTrace();
}
return false;
}
但我无法获取 RespuestaForm 对象。
我做错了什么?
提前致谢!
最佳答案
如果你想使用@RequestBody,那么我认为json应该作为POST而不是GET发送。
这将触发 Spring 的 MappingJacksonHttpMessageConverter (假设您的类路径上有 Jackson)。我不记得您是否需要在 ObjectMapper 中设置 RespuestaForm 类。首先你可以尝试不使用它,看看它是否有效。事实并非如此,那么您可以尝试在 RespuestaForm 对象的 setter 上使用 @JsonProperty 进行注释,以便映射器知道 Json 对象的哪个字段转到您的类上的哪个 setter 方法。
关于java - 如何在 Spring 3 中通过 .getJSON 将对象从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285507/