首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从控制器发送JSON响应?

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

Stack Overflow用户
提问于 2019-10-18 06:27:30
回答 3查看 1K关注 0票数 0

我希望使用json将一个布尔值从我的控制器传递给javascript,但由于我对spring还不熟悉,所以找不到一种方法。

在使用servlet时,我们写道:

代码语言:javascript
运行
复制
response.getWriter().println(somevalue)

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

代码语言:javascript
运行
复制
@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事件->

代码语言:javascript
运行
复制
 function AccountExists()
 {
 $.ajax({
        type: 'POST',
        url: 'registerProcess',
        success: function(data){    
        let detail = JSON.parse(data);
            if( data == true)
                alert("Success");
            else
                alert("Not ");
        }
 });

}

出错--

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-18 06:40:02

您需要使用ResponseEntity@RestController来进行JSON响应。

注意:@RestController包括注释@Controller@ResponseBody

试着用这个:

代码语言:javascript
运行
复制
@RestController
@RequestMapping("controller")
public class Controller {

    @PostMapping("REGISTERACTION")
    public ResponseEntity<Boolean> RegisterUser(@ModelAttribute("register") Register register)
    {

       Boolean registrationSuccess = userService.RegisterUser(register);
       return new ResponseEntity<Boolean>(registrationSuccess , HttpStatus.OK);
    }

}
票数 0
EN

Stack Overflow用户

发布于 2019-10-18 06:36:23

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

票数 0
EN

Stack Overflow用户

发布于 2019-10-18 06:45:33

您可以使用2种方法来实现这一点。

方法1:集模型属性和使用在jsp上可以找到的表达式语言

代码语言:javascript
运行
复制
model.addAttribute("test",true);

在Jsp页面中

代码语言:javascript
运行
复制
${test}

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

代码语言:javascript
运行
复制
@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(基本上是表单提交方法),所以您必须使用第一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58445095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档