首页 > 解决方案 > ajax Spring Liferay

问题描述

我使用的架构具有:AJAX、Liferay 6.2、Spring 4.3.18.RELEASE;

我从 AJAX 调用后端,通过 liferay 并到达我的控制器;

现在,我想在控制器中生成一个异常以达到 ajax 调用的失败;我用谷歌搜索了很多,但我找不到解决方案。

我的控制器:

@Controller("movemementCon")
@RequestMapping("VIEW")
public class movemementCon {

@ResourceMapping("getDis")
    @ResponseBody
    public ResponseEntity<BenException> getImp(ResourceRequest request, ResourceResponse response, Model model) throws BenException{

return new ResponseEntity<BenException>(HttpStatus.NOT_ACCEPTABLE);
}

但是当我到达javascript中的代码(AJAX调用)时,它明确地忽略了我抛出了一个异常;期望的行为是我强制转到 AJAX 调用中的错误语句。

标签: ajaxspring-mvcexceptionliferay

解决方案


在 Web 浏览器中,您无法在客户端捕获 java 错误,因为客户端对后端一无所知。您必须在 spring 控制器方法中捕获该错误,然后返回ResponseEntity一些状态、响应正文、自定义响应标头,以便您可以通知客户端出现问题并在那里正确处理。

@Controller("movemementCon")
@RequestMapping("VIEW")
public class movemementCon {

    @ResourceMapping("getDis")
    @ResponseBody
    public ResponseEntity<SomeClass> getImp(ResourceRequest request, ResourceResponse response, Model model) {
        try{
            deleteFromDatabase(model);
        } catch(BenException e) {
            return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
        }

        return new ResponseEntity<>(HttpStatus.OK);
    }
}

然后在您的 JS 中读取状态并执行正确的操作。


推荐阅读