组件实现有两种思路,一种使用Include,一种使用自定义标签实现。
Include:
使用<s:include> 和<s:param> 或者JSTL中对应标签完成组件JSP的加载,在组件JSP页面可使用 s:action 访问相应的Action获取服务器端数据。
使用s:component加载freeMarker模板,也可以在模板页面使用s:action获取服务器端数据,好处是根据不同的主题可实现不同的效果。
这两种方式效果应该一样,如果不考虑不同主题的问题,建议使用 <c:include>或者<s:include>完成组件的组装
自定义标签:
自定义组件:1. 定义标签 在这步要创建标签说明文件 *.tld
2. 用freemarker 定义标签的显示内容
2. 继承于bodyTagSupport类,在该类中载入ftl,并使用 参数完成标签的初始化
1. jsp中标签的使用 <%a taglib prefix> <jsp:some var="context">2. tld的<tag>中定义attribute和text;
3. java文件: doAfterBody()中得到getBodyContent()得到标签主体, bc.getEnclosingWriter()得到out对象。
4. 文件打包: meta-inf下创建tld文件;将tag文件放入meta-inf/tags目录下;