繁体   English   中英

如何将JSON发送到MVC控制器?

[英]How to send json to mvc controller?

我需要向MVC Controller发送一个JSON字符串,该字符串返回一个ModelAndView对象,但我不知道如何在不使用AJAX的情况下发送json,如果我使用AJAX发送json,则ModelAndView不会重定向我。

我拥有的解决方案之一是通过URL参数发送json,但我不希望在浏览器中看到所有JSON。

这是我的JS代码:

                $('#btnDetalleActivo')
                        .on('click',function() {
                            var data = $('#tablaActivo').bootstrapTable('getSelections')[0].dto;

                                    if (!$.isEmptyObject(data)) {
                                        $(location)
                                                .attr({'href' : "/AT/DetalleActivo",
                                                        data : data});

                                    } else {
                                        swal.info("Debe seleccionar un activo")
                                    }
                                });

这是控制器的代码:

    @RequestMapping(value = { "DetalleActivo" }, method = { RequestMethod.GET })
public ModelAndView getDetalleActivo(@RequestParam Activo activo, HttpServletRequest request) {

ModelAndView modelAndView = null;
ParamProcedureConsultaBean paramProcedureConsulta = new ParamProcedureConsultaBean();

DetalleActivoWrapper wrapperDetalleActivo;

paramProcedureConsulta.setPivIFGD(activo.getIFGD());
paramProcedureConsulta.setPivTABLA("F01");
paramProcedureConsulta.setPivPERIODO(activo.getFECHAREPORTING());
paramProcedureConsulta.setPivIdMovimiento(activo.getIDMOVIMIENTO());
paramProcedureConsulta.setPivENTIDAD(activo.getENTIDADINM());
paramProcedureConsulta.setPivMACRO(activo.getMCRO());
paramProcedureConsulta.setPivDEPENDENCIA(activo.getDCIA());
paramProcedureConsulta.setPivCUENTA(activo.getNCTA());
paramProcedureConsulta.setPivIdPARTIC(activo.getNNIF());

DetalleActivoBean detalleActivoBean = detalleActivoService.getDetalleActivo(paramProcedureConsulta);

if (detalleActivoBean.getRespuesta().getCODRETORNO() == 0) {
    wrapperDetalleActivo = new DetalleActivoWrapper(detalleActivoBean.getResultado().getDetalleActivo());
    modelAndView = new ModelAndView("ArbolApp/Activos/DetalleActivos", "detalleActivo", wrapperDetalleActivo);
} else {
    modelAndView = new ModelAndView("ArbolApp/ArbolIndex", "mensajeError",
        detalleActivoBean.getRespuesta().getMSGERROR());
}

return modelAndView;
}

希望你能听懂我的英语!

您可以尝试此操作,在pom.xml中添加依赖项:

<!-- Need this for json to/from object -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

那么您可以发送任何JSON对象,它们将被自动转换为Java对象,只要确保Java类变量与JSON对象的字段具有相同的名称即可(如果这是您的JSON对象)。

{field1: "value1", field2: "value2"}

那么你应该使java类,

public class Test{ String field1, field2;}

并收到它们,

@RequestMapping(value="/someMethod", method=RequestMethod.POST)
public ModelAndView someMethod(@RequestBody Test test) {

    //your code
}

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM