在上次认识到freemarker中的TemplateLoader接口和struts2中的FreemarkerManager对于整合的作用之后,将两次写的代码合并在一起使用,以为可以实现从数据库中读取模板的例子,结果整合后效果并不理想,struts2的所有界面用的标签都不显示了,后台报错,空指针异常。
再次查看相关的源代码,发现两个问题:
1,如果找不到对应的模板TemplateLoader接口的实现类,要在调用findTemplateSource方法的时候就返回null,在freemarker框架调用getReader方法的时候,不能返回null。这就是那个空指针异常的由来。
2,struts2本身用freemarker实现了自己的标签,界面标签更是如此。以至于如果freemarker框架出错,就会导致struts2的标签出不来。
调整后再次整合就没有问题了。