ajax - 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 调用中的错误语句。
解决方案
在 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 中读取状态并执行正确的操作。
推荐阅读
- python - pygame event.get 致命的 Python 错误:PyEval_RestoreThread: NULL tstate
- python - “撤消”numpy.delete,numpy.insert?
- discord.js - for循环上的awaitMessage
- python - 如何在 NetworkX 中为节点的数据部分获取多行
- python - python中的快乐数字问题。如何避免无限循环?
- javascript - 在返回之前设置状态总是失败,因为它没有完成反应
- redis - Redis 无法以未更改的配置启动?
- json - 无法将 JSON 数据解析为 listview(_TypeError (type '_InternalLinkedHashMap
' 不是类型 'FutureOr 的子类型 - >')
- recursion - Lisp递归函数检查列表中的值不起作用
- sql-server - Xpath 错误地转换 Char(13)