对于 getParaToLong、getParaToXxx系列,建议如果出现转换失败建议处理为 Http 400 BadRequest 的异常,而不是404啊。
private Long toLong(String value, Long defaultValue) {
try {
if (value == null || "".equals(value.trim()))
return defaultValue;
value = value.trim();
if (value.startsWith("N") || value.startsWith("n"))
return -Long.parseLong(value.substring(1));
return Long.parseLong(value);
}
catch (Exception e) {
throw new ActionException(404, renderFactory.getErrorRender(404), "Can not parse the parameter \"" + value + "\" to Long value.");
}
}
回答
5
条回答
10多分钟不错了,有些人一天估计都找不出问题所在。好多菜鸟...
@RocY 你的建议已采纳: https://git.oschina.net/jfinal/jfinal/blob/master/src/main/java/com/jfinal/core/Controller.java
感谢你的支持
@jfinal 我的建议是 400,400 我就知道是请求参数的问题,而 404 我得调试代码查找原因(还好 JFinal 的代码层套的没有那么深,不然调试都会花上十分钟)。
这个 404,我尝试了查看前端调用、查看控制台输出、查看JFinalConfig
子类的400错误页面的配置、下了断点在getParaToLong()
方法之上(这个方法尝试了调试了3次,按F6 StepOver 就 404 了,最后才决定 F5 进去看),前前后后已经浪费了我的 10 多分钟。
400 BadRequest 貌似也合理, urlPara 出现错误,也可以认为是 url 不正确, 404 也是可以的,这个问题值得再思考
这个提示让我转了几个圈圈,最后去调试看代码,原来这里有个坑。