Spring 如何从控制器发送JSON响应?
我想使用json将一个布尔值从我的控制器传递到javascript,但找不到方法,因为我是SpringMVC新手 在使用servlet时,我们写道:Spring 如何从控制器发送JSON响应?,spring,spring-mvc,Spring,Spring Mvc,我想使用json将一个布尔值从我的控制器传递到javascript,但找不到方法,因为我是SpringMVC新手 在使用servlet时,我们写道: response.getWriter().println(somevalue) 可以使用ajax接收somevalue。 这里我的控制器方法是: @RequestMapping(value = REGISTERACTION , method = RequestMethod.POST) @ResponseBody public boolean Re
response.getWriter().println(somevalue)
可以使用ajax接收somevalue
。
这里我的控制器方法是:
@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函数中,使用onsubmitevent-->
}
获取错误--
根据请求中接收到的主动协商标头字段,目标资源没有用户代理可以接受的当前表示形式,服务器不愿意提供默认表示形式。尝试在控制器的方法中使用@ResponseBody注释。并将方法的返回类型更改为Boolean,然后返回Registrationsuccess而不是ModelAndView。对于JSON响应,您需要使用
ResponseEntity
和@RestController
注:@RestController
包括注释@Controller
和@ResponseBody
试试这个:
@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);
}
}
@RestController
@请求映射(“控制器”)
公共类控制器{
@后映射(“注册操作”)
公共响应注册器(@modeldattribute(“注册器”)注册器)
{
布尔registrationSuccess=userService.RegisterUser(寄存器);
返回新的响应状态(registrationSuccess,HttpStatus.OK);
}
}
您可以使用2种方法来实现这一点
方法1:设置模型属性并使用表达式语言,您可以在jsp
model.addAttribute("test",true);
在Jsp页面中
${test}
方法2:如果您发送的是ajax请求,而不是ModelAndView
创建一个对象
设置任何属性boolean
并从方法@ResponseBody
返回对象,您将在Ajax响应中获得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(基本上是表单提交方法)因此,您必须使用第一种方法。您是否尝试将返回类型更改为
布尔值
,并返回注册成功
,而不是模型和视图
?请检查编辑@kartik@ResponseBody注释和ResponseEntity之间的区别是什么@Anish@VidhiAgarwal@RestController
包括注释@Controller
和@ResponseBody
@VidhiAgarwal@ResponseBody
它将对象转换为合适的web响应,如JSON或XML。你可以设置它。ResponseEntity是完整的HTTP响应。您可以在其中设置各种内容,如状态代码、内容类型等。。请查看文档以了解更多信息。我已经编辑了我的问题。你能检查一下吗@Anish@VidhiAgarwal请看这个答案--它将帮助您。我想发送javascipt函数,并根据这个布尔值在我的jsp页面中发送警报@vivekdubeyI已编辑问题..请检查@vivekdubey@VidhiAgarwal使用第二种方法可以做到这一点
@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;
}