JFinal中的IMainRenderFactory具体怎么用?

alvinte 发布于 2012/07/04 15:01
阅读 810
收藏 2
最近看 JFinal源码,发现IMainRenderFactory这个java文件,这个接口具体怎么用呢?
加载中
0
JFinal
JFinal

    简单来说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等 :)

    

0
JFinal
JFinal

忘了说具体用法了,具体用法如下:

1:创建自定义的Render,如XmlRender

2:创建IMainRenderFactory实现类,如

public class XmlRenderFactory implements IMainRenderFactory {
	public Render getRender(String view) {
		return new XmlRender(view);
	}
}

3:在YourJFinalConfig中配置一下,如:constants.setMainRenderFactory (new XmlRenderFactory())


返回顶部
顶部