2017-06-12 15:29
@JFinal
上述问题已经解决
分析:
我看了下源码,出现505错误后,错误返回是ActionHandler负责处理,代码如下:
renderManager.getRenderFactory().getErrorRender(500).setContext(request, response, action.getViewPath()).render();
其中getErrorRender(500)调用RenderFactory.getErrorRender(500),代码如下:
public Render getErrorRender(int errorCode) {
return new ErrorRender(errorCode, constants.getErrorView(errorCode));
}
所以我只需要使用MyRenderFactory的实例替代renderManager中的RenderFactory即可,而ActionHandler中的RenderManager代码如下
private static final RenderManager renderManager = RenderManager.me();
RenderManager.me()返回的又是一个常量
所以解决方法如下:
在Config中增加如下代码:
public void configConstant(Constants me) {
//设置全局错误回复
RenderManager.me().setRenderFactory(new MyRenderFactory());
}
MyRenderFactory代码如下:
/**
* 设置500错误返回Json
*/
public class MyRenderFactory extends RenderFactory {
@Override
public Render getErrorRender(int errorCode) {
RespBody respBody = new RespBody();
respBody.setResult(RespBody.Code.ERROR);
if (errorCode == 500) {
return new JsonRender(respBody);
}
return super.getErrorRender(errorCode);
}
}
搞定!
2017-06-03 15:05
@JFinal 上面的问题已经解决了,使用Model类自带的public M set(String attr, Object value) ,和public T get(String attr)方法即可
2017-06-03 14:41
@JFinal 如果使用getBean()方法获取参数,model类中就需要相应的setter和getter,但是setter和getter对应一个private的属性,该属性需要和数据表中的列名一致吗?