2016-05-12 109 views
0

我需要发送一个JSON字符串到MVC控制器返回一个ModelAndView对象,但我不知道如何发送没有AJAX的JSON,如果我发送与AJAX的JSON ModelAndView不会重定向我。如何发送json到mvc控制器?

我有一个解决方案是通过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; 
} 

我希望你明白我的英语!

+0

使用jquery.get链接:https://api.jquery.com/jquery.get/ –

+0

首先,您需要发送json,并在代码中评论我看到ajax请求类型为'POST',而您的控制器使用GET ,尝试将method = {RequestMethod.GET})更改为POST并取消注释ajax调用 –

+0

我无法使用Ajax执行调用,因为Spring MVC不会将我重定向到View,而是在问题中告诉它。我需要通过另一种方式进行呼叫,例如href。 – emilioxiri

回答

0

你可以试试这个,在你的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 
} 

希望这将有助于。