云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

首先,在web项目的页面根目录下建立目录template
然后创建目录simple和xhtml,以上的目录名是struts2缺省使用的,不同的主题使用相应的目录。然后再创建一个components目录,在这个目录下,创建一个property.ftl。 最后的目录结构如下:
template/simple/components/property.ftl
template/xhtml/components/property.ftl

然后在property.ftl中可以使用FreeMarker来定义新的模板(FreeMarker的具体语法可以查看FreeMarker的官方网站,相当的详细易懂):
<#include "/${parameters.templateDir}/${parameters.theme}/controlheader.ftl" />
<@s.if test="${parameters.value} == null || ${parameters.value} == '' ">&nbsp;</@s.if>
<@s.else><@s.property value="${parameters.value}" /></@s.else>
<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />

以上是一个我自定义的模板,检测结果是否为空字符串,如果是空的话,就输出一个&nbsp; 这样在输出结果时表格的边框线就是完整的了。

定义好之后,在jsp页面中就可以这样使用了:

<s:component template="/components/property.ftl" theme="simple">
  <s:param name="value" value="%{'bookName'}"/>
</s:component>

第一行中的目录名从自components开始,struts2会自动在template目录下去寻找,如是主题是simple, 就在simple目录下找。
另外,param的语法要注意一下,%{}里面需要加一对引号



评论

# re: 用freemarker做模板创建一个struts2自定义标签  回复  更多评论   

2008-04-12 08:21 by 漠漠
输出结果时表格的边框线问题的根源是CSS样式定义的问题,楼主这样做只会更麻烦

# re: 用freemarker做模板创建一个struts2自定义标签  回复  更多评论   

2008-04-12 13:08 by usherlight
@漠漠
hehe,我这里主要是用这个例子来说明自定义标签的过程和方法。

# re: 用freemarker做模板创建一个struts2自定义标签  回复  更多评论   

2008-06-01 19:17 by 曾伟杭印
饿

# re: 用freemarker做模板创建一个struts2自定义标签  回复  更多评论   

2009-03-24 14:26 by 路过
好好好

只有注册用户登录后才能发表评论。


网站导航: