接口返回值问题?

(RequestInterceptor.)
(){
    String strJson = getPara()(!.isJSONArray(strJson) || StringUtils.(strJson)){
        .info(strJson)renderJson(ResultJson<>(Global.))}

    .bathList(strJson)renderJson(ResultJson<>(Global.))}

这样的一个接口,程序需要我返回:addChat.html

2021-05-28 20:00:19,983 [ERROR] [http-nio-30005-exec-10] ActionHandler.handle - /chat/addChat

com.jfinal.render.RenderException: Example : error : cannot find template /WEB-INF/template/chat/addChat.html

Caused by: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource '/WEB-INF/template/chat/addChat.html'

我看到有说用

renderJson

返回不是不用返回界面吗?为什么还报这个错?之前有成功过,现在报错?

评论区

杜福忠

2021-05-29 00:33

贴的代码乱了也不全。
我推测,可能是有个addChat的Action方法。里面代码有try包裹,然后 renderJson在try里面。
当程序运行在try里面时异常了,renderJson被跳过了,并且catch并没有继续外抛,给吃了。
这时候JF正常执行,检测到没有render对象,会默认放一个Action名拼接的一个HTML文件名地址,用于模板文件渲染render(拼接文件名)。但是该文件并不存在,所以就报错了。
上面只是一种推测,可能还有其他原因导致,可以断点追一下代码。要解决上面问题,可以在catch后再次用renderJson返回错误信息。 但是我们一般开发接口服务的时候,都是有一个全局catch返回Json错误信息,然后Controller 中一般并不catch吃掉

一只敲代码的猫

2021-05-31 11:05

public void addChat(){
//json数组字符串
String strJson = getPara("chatList","");
if (!avatarService.isJSONArray(strJson) || StringUtils.isEmpty(strJson)){
log.info("批量保存聊天数据错误。{}:不是JSONArray字符串或者为null", strJson);
renderJson(new ResultJson<>(Global.FAIL, "批量保存聊天数据错误"));
return;
}
try{
service.bathList(strJson);
}catch (Exception e){
log.info("保存聊天记录异常!错误信息:" + e.getMessage());
renderJson(new ResultJson<>(Global.FAIL, "批量保存聊天数据失败"));
}

renderJson(new ResultJson<>(Global.OK, "批量保存聊天数据成功"));
}

这个还是一样的错