我有这个豆子:
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类型的对象传递给控制器,所以这就是我在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...
});
}
这是控制器中的方法:
@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对象。
我做错了什么?
提前致谢!
答案 0 :(得分:2)
如果你想使用@RequestBody,那么我认为json应该作为POST而不是GET发送。
这将触发Spring的MappingJacksonHttpMessageConverter(假设你的类路径上有Jackson)。我不记得你是否需要在ObjectMapper中设置RespuestaForm类。首先,你可以尝试没有它,看它是否有效。它没有,那么你可以尝试在其setter上用@JsonProperty注释你的RespuestaForm对象,这样映射器就知道Json对象的哪个字段转到你班级的setter方法。