最近看 JFinal源码,发现IMainRenderFactory
这个java文件,这个接口具体怎么用呢?
简单来说IMainRenderFactory是用来创建Controller.render(String)这个方法调用后的Render对象的。
JFinal默认支持在调用Controller.render(String)方法后创建`FreeMarkerRender、JspRender、VelocityRender`这三类对象,具体创建哪一种对象需要调用contants.setViewType(ViewType)来指定,不指定时默认创建`FreeMarkerRender`对象。
当以上三类Render不能满足开发者需求时,可借助于`IMainRenderFactory`来指定创建的Render对象,只需要在JFinalConfig中设置一下:`constants.setMainRenderFactory(IMainRenderFactory)。`
这类需求是真实存在过的,例如,有个同事基于JFinal针对淘宝与酷迅做过一个机票查询的业务系统,淘宝与酷迅通过http向服务发送请求,服务响应Xml数据。通常的办法是自定义一个XmlRender,然后调用`Controller.render(new XmlRender(...))`就可以了。但这样做代码过于冗长,开发者希望调用 `Controller.render(...)`这个方法来实现Xml数据的响应,`IMainRenderFactory`就可以满足这类需求。
当您需要响应的数据是需要自定义Render,并且需要经常使用这个自定义Render的jf,使用IMainRenderFactory可以让代码更干净,更省。`IMainRenderFactory`特别适合于响应特定类型数据的服务系统,如Json、Xml等 :)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。