我有一个管理用户的页面,如果点击保存时出现任何错误,我想留在页面上。 我在网上找到的唯一一个验证方法。
此外,我的页面需要发布userId,所以我不认为返回控制器中原始页面的名称会起作用。另外,我会松开页面中所做的更改。
我想要实现的是留在同一页面,向用户显示一条消息。
这是我的控制器:
@RequestMapping(method = RequestMethod.POST)
public String editUser(@RequestParam("userId") String userId, final Map<String, Object> model) {
User user = spiService.getUser(userId);
model.put("user", user);
configureRoles(model, user);
return "edituser";
}
@RequestMapping(path = "/updateUser", method = RequestMethod.POST)
public String updateUser(@RequestParam("userJson") String userRoles, @RequestParam("userId") String userId, final Map<String, Object> model) throws IOException {
User user = spiService.getUser(userId);
try {
addRoles(JsonUtil.getField(userRoles, "addedRoles"), user.getRoles(), userId);
removeRoles(JsonUtil.getField(userRoles, "removedRoles"), user.getRoles(), userId);
} catch (Exception ex) {
// What now?
}
return "users";
}
答案 0 :(得分:0)
您可以在控制器中使用Ajax调用,而不是重定向。为此,您必须为示例AjaxResponseBody
创建一个AjaxPojoClass
例如
$.ajax({
type : "POST",
contentType : "application/json",
url : "/yourUrl",
data : JSON.stringify(data),
dataType : 'json',
success : function(data) {
window.location.replace("/successUrl")
},
error : function(e) {
display(e);
},
});
AjaxController
@Controller
public class AjaxController {
@ResponseBody
@RequestMapping(value = "/yourUrl")
public AjaxResponseBody getSearchResultViaAjax(@RequestBody SearchCriteria search) {
AjaxResponseBody result = new AjaxResponseBody();
//logic
return result;
}
}
答案 1 :(得分:-1)
您可以使用ajax提交请求。