我正在尝试使用角度和弹簧启动创建一个简单的用户创建程序。在用户创建部分我得到异常:循环视图路径[createUser]:将再次调度回当前处理程序URL [/ createUser]。检查您的ViewResolver设置! (提示:由于默认的视图名称生成,这可能是未指定视图的结果。)。
我在堆栈溢出中看到了与同一问题相关的多个答案,但我无法解决这个问题。
附件是代码:
@RequestMapping(value="/createUser",method=RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)
public void createUser(@RequestBody String user) throws JsonParseException, JsonMappingException, IOException{
ObjectMapper mapper=new ObjectMapper();
User userObj=mapper.readValue(user, User.class);
UserFunction uf = new UserFunction();
uf.createUser(userObj);
}
网页:
<body>
<div ng-app="MyApp" ng-controller="MyCtrl as ctrl">
<form ng-submit="createUser()" name="myForm">
<table>
<tr>
<td>Id</td>
<td><input type="text" ng-model="user.id" value="user.id">
</tr>
<tr>
<td>Name</td>
<td><input type="text" ng-model="user.name" value="user.name">
</tr>
<tr>
<td>Age</td>
<td><input type="text" ng-model="user.age" value="user.age">
</tr>
<tr>
<td></td>
</tr>
</table>
<input type="submit">
<h2>Id: {{user.id}}</h2>
<h2>Name: {{user.name}}</h2>
<h2>Age: {{user.age}}</h2>
</form>
</div>
<script>
var app = angular.module("MyApp", []);
app.controller("MyCtrl", function($scope, $http) {
$scope.user = {
name : "",
id : 0,
age : 0
};
$scope.createUser = function() {
var data=JSON.stringify($scope.user);
$http.post("/createUser", data).then(function() {
alert("User created");
}, function() {
})
}
})
</script>
从论坛的这个问题的答案我明白我必须对配置进行一些更改,但在哪里进行这些更改。我无法理解。 请帮忙。 提前谢谢!
答案 0 :(得分:1)
将控制器功能更改为:
后问题解决了 @RequestMapping(value="/createUser",method=RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity createUser(@RequestBody String user) throws JsonParseException, JsonMappingException, IOException{
ObjectMapper mapper=new ObjectMapper();
User userObj=mapper.readValue(user, User.class);
UserFunction uf = new UserFunction();
uf.createUser(userObj);
return new ResponseEntity(HttpStatus.OK);
}
答案 1 :(得分:0)
此处,您的视图解析程序在createUser
方法执行后不知道实际重定向控件的位置。就像@Jayant所说的那样,尝试在@ResponseBody
方法中添加createUser
,以便视图解析器不会查找重定向页面,而是将响应原样发送到调用位置。