2017-06-16 14:21

@JFinal 明白,多谢站长

2017-06-13 09:48

@chenzz RespBody是自己定义的一个类,统一返回Json数据格式

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:06

@JFinal 不过还有一个问题,数据库中因多对多关系所建的关系表,也需要对应一个model类吗

2017-06-03 15:05

@JFinal 上面的问题已经解决了,使用Model类自带的public M set(String attr, Object value) ,和public T get(String attr)方法即可

2017-06-03 14:51

实例中RespBody 类是哪个包带的?还是自己写的?

2017-06-03 14:41

@JFinal 如果使用getBean()方法获取参数,model类中就需要相应的setter和getter,但是setter和getter对应一个private的属性,该属性需要和数据表中的列名一致吗?