java - 如何在 Spring 3 中通过 .getJSON 将对象从 View 传递到 Controller

标签 java jquery spring-mvc getjson

我有这个 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/

相关文章:

java - 为按钮数组添加ActionListener?

Java:如何设计此类以具有可选泛型 ParameterType?

javascript - 如果 css() == X,否则,不工作,表单不工作

javascript - 我的函数不会运行?

jquery - 我试图使用jquery的clone()来创建多个类似 Sprite 的DIV,导致浏览器崩溃

mysql - 我想忽略成为@Transactional 的特定实体(使用 Spring/Hibernate)

java - 安卓工作室说 'Local variable is redundant'

java - 将字节数组转换为 Wav 文件

html - 从没有jquery的按钮的html onclick事件调用Spring mvc Controller post方法

java - 在 Spring MVC 中搜索