我们用Struts2中好像并没有见到使用freemark的踪迹,后台的java代码我们用到的action是可以继承actionsupport的。Struts.xml配置更是看不到freekmark的影子,唯独在struts.properties中偶尔见过struts.ui.theme=xhtml的配置。
那么就让我们从struts.peroerties开始去寻根究底吧。
struts.ui.theme=xhtml的意思是什么那?就是在遇到ftl的时候默认的会去用xhtml包下ftl,但是并没有发现我们用到ftl的地方,从头到现在我们看了看,好像少了前台的显示问题,也就是jsp的页面的问题。因为在jsp页面里面还用到了struts2的标签技术,难道标签技术的背后是用到了我们想了解的ftl吗?
让我们那一个<s:form>标签来研究吧!
找到struts2的tld文件
找到tag的name为form的标签,查看所有的attribute都没有发现可疑情况,唯独要去找的就是tag-class了
org.apache.struts2.views.jsp.ui.FormTag,继续
根据FormTag我们两条路径去找
1.它的父类 AbstractClosingTag 一直向上追溯 途中发现过theme的属性,但是始终没有找到对应的form.ftl或form-colse.ftl。静下来一想,formtag有的别的tag不一定有,那么肯定不能从他的父类中找到
2.柳暗花明FormTag中的getBean方法,发现了form类,找到了OPEN_TEMPLATE和TEMPLATE,终于明白了ftl在标签中的作用。
但这仅仅是开始刚才在追溯AbstractClosingTag 的时候一直追溯到javax的类,最终继承的还是javax.servlet.jsp.tagext.TagSupport类,因此熟练的j2ee标签知识还是必备的。
注:以上所说均可在struts的源码中找到答案。