14.5 RenderFactory

优质
小牛编辑
130浏览
2023-12-01

JFinal 3.0 对 render 模块做了全面重构,抽取出了IRenderFactory接口,而原来的RenderFactory成为了接口的默认实现类,去除了原来的IMainRenderFactory、IErrorRenderFactory、IXmlRenderFactory三个接口,所有对 render 的扩展与定制全部都可以通过继承RenderFactory来实现,3.0版本的render模块可对所有render进行切换与定制,并且扩展方式完全一致。如果老项目对IMainRenderFactory做过扩展,只需要照如下方式进行升级:

public class MyRenderFactory extends RenderFactory {
  public Render getRender(String view) {
     return new MyRender(view);
  }
}

同理,如果以前对 IErrorRenderFactory 或者 IXmlRenderFactory 做过扩展的,只需要在上面的MyRenderFactory类中添加上getErrorRender(…) 与 getXmlRender(…) 方法即可。扩展完以后在configConstant 中进行如下配置:

public void configConstant(Constants me) {
  me.setRenderFactory(new MyRenderFactory());
}

JFinal 3.0 对所有render扩展,采取了完全一致的扩展方式,学习成本更低,使用更方便,升级也很方便。此外,原来RenderFactory类中的me() 已经被取消,老项目对此有依赖的只需要将RenderFactory.me() 直接改为RenderManager.me().getRenderFactory() 即可。