0

我有这个豆子:

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。

我究竟做错了什么?

提前致谢!

4

1 回答 1

2

如果你想使用@RequestBody,那么我认为json应该作为POST而不是GET发送。

这将触发 Spring 的 MappingJacksonHttpMessageConverter(假设您的类路径中有 Jackson)。我不记得您是否需要在 ObjectMapper 中设置 RespuestaForm 类。首先,您可以尝试不使用它,看看它是否有效。它不是,那么您可以尝试在其设置器上使用 @JsonProperty 注释您的 RespuestaForm 对象,以便映射器知道 Json 对象的哪个字段转到您的类上的哪个设置器方法。

于 2012-04-23T18:08:00.927 回答