Spring - 错误时停止重定向

时间:2017-08-17 12:01:52

标签: spring error-handling

我有一个管理用户的页面,如果点击保存时出现任何错误,我想留在页面上。 我在网上找到的唯一一个验证方法。

此外,我的页面需要发布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";
}

2 个答案:

答案 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提交请求。