如何从控制器发送JSON响应?

时间:2019-10-18 06:27:30

标签: spring spring-mvc

enter image description here我想使用json将布尔值从控制器传递给javascript,但是由于我是spring mvc的新手,所以找不到方法。

使用servlet时,我们写道:

response.getWriter().println(somevalue)

somevalue可以使用ajax接收。 这是我的控制器方法:

@RequestMapping(value = REGISTERACTION , method = RequestMethod.POST)
@ResponseBody
public boolean RegisterUser(@ModelAttribute("register") Register register,HttpServletRequest request, HttpServletResponse response)
{

    boolean Registrationsuccess = userService.RegisterUser(register);
    return Registrationsuccess;
}

因此,这里的布尔变量是Registrationsuccess,我想将其发送到js文件并使用ajax接收它。

在我的javascipt函数中,该函数使用 onsubmit 事件->

调用
 function AccountExists()
 {
 $.ajax({
        type: 'POST',
        url: 'registerProcess',
        success: function(data){    
        let detail = JSON.parse(data);
            if( data == true)
                alert("Success");
            else
                alert("Not ");
        }
 });

}

出错-

根据请求中收到的主动协商标头字段,目标资源没有用户代理可以接受的当前表示形式,并且服务器不愿意提供默认表示形式。

3 个答案:

答案 0 :(得分:0)

尝试在控制器的方法中使用@ResponseBody批注。并将方法的返回类型更改为Boolean,然后返回Registrationsuccess而不是ModelAndView。

答案 1 :(得分:0)

您需要使用mdbootstrapResponseEntity进行JSON响应。

注意:@RestController同时包含注释@RestController@Controller

尝试一下:

@ResponseBody

答案 2 :(得分:0)

您可以使用2种方法实现

方法1::设置模型属性并使用您可以在jsp上找到的表达语言

model.addAttribute("test",true);

在Jsp页面中

${test}

方法2::如果您要发送ajax请求而不是ModelAndView,请创建一个对象 设置任何属性boolean并从方法@ResponseBody批注返回对象,您将在Ajax Response中获得json

@RequestMapping(value = REGISTERACTION , method = RequestMethod.POST)
public @ResponseBody MyCustomObject RegisterUser(@ModelAttribute("register") Register register,HttpServletRequest request, HttpServletResponse response)
{

    boolean Registrationsuccess = userService.RegisterUser(register);
    MyCustomObject cusobj=new MyCustomObject();
    cusobj.setStatus(true);
    return cusobj;
}

无论您编写了什么代码,都不会返回json(这基本上是表单提交方法),因此您必须采用第一种方法。