我想使用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 ");
}
});
}
出错-
根据请求中收到的主动协商标头字段,目标资源没有用户代理可以接受的当前表示形式,并且服务器不愿意提供默认表示形式。
答案 0 :(得分:0)
尝试在控制器的方法中使用@ResponseBody批注。并将方法的返回类型更改为Boolean,然后返回Registrationsuccess而不是ModelAndView。
答案 1 :(得分:0)
您需要使用mdbootstrap
和ResponseEntity
进行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(这基本上是表单提交方法),因此您必须采用第一种方法。