如何发送json到mvc控制器?
问题描述:
我需要发送一个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;
}
我希望你明白我的英语!
答
你可以试试这个,在你的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
}
希望这将有助于。
使用jquery.get链接:https://api.jquery.com/jquery.get/ –
首先,您需要发送json,并在代码中评论我看到ajax请求类型为'POST',而您的控制器使用GET ,尝试将method = {RequestMethod.GET})更改为POST并取消注释ajax调用 –
我无法使用Ajax执行调用,因为Spring MVC不会将我重定向到View,而是在问题中告诉它。我需要通过另一种方式进行呼叫,例如href。 – emilioxiri