3.2支持从jar包中加载模版,但是只能指定一个路径,要么是jar包,要么是webapp下面,在波总的指导下我做了个简单的扩展,下面是主要的代码,其中的buildFinalFileName方法,copy FileSource类中的同名方法出来即可。
public class MixPathSource implements ISourceFactory{ @Override public ISource getSource(String baseTemplatePath,String fileName,String encoding){ String filePath=PathKit.getWebRootPath()+(baseTemplatePath!=null?baseTemplatePath:""); File file=new File(buildFinalFileName(filePath,fileName)); if(file.exists()){ return new FileSource(filePath,fileName,encoding); }else{ return new ClassPathSource(baseTemplatePath,fileName,encoding); } } }
configEngine里面设置一下来源
engine.setSourceFactory(new MixPathSource());
这样不管在jar包中的文件还是webapp里面的都能扫描到了,可见JFinal的设计相当灵活。