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 を GET ではなく POST として送信する必要があると思います。

これにより、Spring の MappingJacksonHttpMessageConverter がトリガーされます (クラスパスに Jackson があると仮定します)。ObjectMapper で RespuestaForm クラスを設定する必要があるかどうかは覚えていません。まず、それなしで試して、機能するかどうかを確認できます。そうでない場合は、RespuestaForm オブジェクトにセッターで @JsonProperty のアノテーションを付けて、Json オブジェクトのどのフィールドがクラスのどのセッター メソッドに送られるかをマッパーが認識できるようにすることができます。

于 2012-04-23T18:08:00.927 に答える