首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

struts2运用freemarker充当表现层

2012-10-19 
struts2使用freemarker充当表现层struts2使用freemarker充当表现层安装freemark eclipse的编辑器,更新地址

struts2使用freemarker充当表现层

struts2使用freemarker充当表现层

安装freemark eclipse的编辑器,更新地址为:

一、在freemark中如何jsp标签

1、需要在web.xml文件中配置以下信息,让Struts2在freemarker中支持标签功能

?这样在freemark中就可以使用jsp标签了。

?2、jsp include 标签的替换<%@ include file=""%>

? 由于使用struts2,所以直接用struts2 include标签替换写法为:

? 看freemark文档还可以使用由 FreemarkerServlet(2.3.15 版本之后)提供的客户化标签
<@include_page path="..."/>来包含另一个 Web 应用资源的内容到输出内容中;
这对于整合JSP页面(在同一Web服务器中生活在FreeMarker模板旁边)的输出到FreeMarker
模板的输出中非常有用。使用:

<@include_page path="path/to/some.jsp"/>

和使用jsp指令功能一样<jsp:include page="path/to/some.jsp">

?3、ctx变量的取得

struts2与FreeMarker整合提供的内建变量如下:

名称作用
stack ? ? ? ? ? ?值栈本身, 方便使用 ${stack.findString('ognl expr')}的方式调用
action ? ? ? ? ? 最近执行的action
response? ? ?HttpServletResponse
res? ? ? ? ? ? ? 与response相同
request? ? ? ?HttpServletRequest
req? ? ? ? ? ? ?与reqeust相同
session? ? ? HttpSession
application?ServletContext
base ? ? ? ? ? request的上下文路径(context path)

所以使用${base}替换${ctx}就可以?4、使用freemark的 if,list替换struts2的if iterator标签?

if标签没什么好说的

?

5、遇到的小意外

?计算序号一开始的写法为:

${etsp_index+1+page.pageSize*(page.pageNo-1)}

进入页面就报:

进入排行页面时就出现如下错误:
Expecting a string, date or number here, Expression page.pageNo is instead a freemarker.ext.beans.SimpleMethodModel。

不清楚这个错误信息是啥意思,感觉甚是奇怪。于是,在网上查找原因,有网友说是方法名和字段名相同造成的。还真如这网友说的一样,Page.java中确实有个方法名叫pageNo:
public Page pageNo(final int thePageNo) {
setPageNo(thePageNo);
return this;
}

最后改成:${etsp_index+1+page.getPageSize()*(page.getPageNo()-1)}这样方法调用就可以

?完整的ftl文件如下:

?

 

热点排行