- 浏览: 757265 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
Displaytag是一个很好的分页标签,它支持数据库端分页(在displaytag1.1的版本中也实现了数据库端分页,只要实现
PaginatedList接口,然后把这个对象扔到页面上的display:table标签中就能实现数据库端分页。这里所说的数据库端分页就是
displaytag文档中提到的partial
list),排序,也支持导出各种文件,比如说pdf,excel等等,而且它还支持程序员使用decorator模式来包装和更改要输出的model的
属性,等等。
而freemarker是一个很好的模板引擎,它被设计的目的就是被用在view层,通过模板来生成html页面,在动态页面中使用模板技术的目
的就是分离页面设计者和程序员的职责,而且模板的速度更快,尤其是无需编译这种特性,模板的优缺点及freemarker和velocity的比较见http://www.iteye.com/topic/71430
。(题
外话:有人可能不同意我的观点,但我仍然相信术业有专攻,每个人都有自己强的一方面,以前在看robbin的一个就业ppt中,感觉有一句话说得特别好,
什么叫成功:成功不是弥补自己的不足,而是把自己的优点发挥到及至,这样就能够成功。)
这两个都是口碑很好的开源项目,让我觉得放弃他们中的任何一个都是非常可惜的,在使用模板语言的时候,如果不用displaytag(或者其他分
页的tag),那么必须得自己写marco来实现分页的功能,其实就是用freemarker或者velocity模板语言把分页的功能又写了一遍,可以
也是可以的,只是要花一些人力物力,说白了就是实现同样的功能却要花更多的钱和时间,在做外包的时候这样尤其不可取了(当然个人学习研究就另当别论了),
那么在企业应用开发中如果把两者结合起来应该是一个不错的选择,这样既拥有了模板语言的优势又能只用几行代码就搞定分页排序等功能,两全其美,一举两得,
快哉。
那么让我们来看一下步骤:
1, 在web.xml导入FreemarkerServlet的配置
- <servlet>
- <servlet-name>freemarker</servlet-name>
- <servlet-class >freemarker.ext.servlet.FreemarkerServlet</servlet- class >
- <!-- FreemarkerServlet settings: -->
- <init-param>
- <param-name>TemplatePath</param-name>
- <param-value>/</param-value>
- </init-param>
- <init-param>
- <param-name>NoCache</param-name>
- <param-value>true </param-value>
- </init-param>
- <init-param>
- <param-name>ContentType</param-name>
- <param-value>text/html</param-value>
- </init-param>
- <!-- FreeMarker settings: -->
- <init-param>
- <param-name>template_update_delay</param-name>
- <param-value>0 </param-value> <!-- 0 is for development only! Use higher value otherwise. -->
- </init-param>
- <init-param>
- <param-name>default_encoding</param-name>
- <param-value>UTF-8 </param-value>
- </init-param>
- <init-param>
- <param-name>number_format</param-name>
- <param-value>0 .##########</param-value>
- </init-param>
- <load-on-startup>1 </load-on-startup>
- </servlet>
- <servlet>
- <servlet-name>JspSupportServlet</servlet-name>
- <servlet-class >
- org.apache.struts2.views.JspSupportServlet
- </servlet-class >
- <load-on-startup>1 </load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>freemarker</servlet-name>
- <url-pattern>*.ftl</url-pattern>
- </servlet-mapping>
<servlet> <servlet-name>freemarker</servlet-name> <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class> <!-- FreemarkerServlet settings: --> <init-param> <param-name>TemplatePath</param-name> <param-value>/</param-value> </init-param> <init-param> <param-name>NoCache</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>ContentType</param-name> <param-value>text/html</param-value> </init-param> <!-- FreeMarker settings: --> <init-param> <param-name>template_update_delay</param-name> <param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. --> </init-param> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>number_format</param-name> <param-value>0.##########</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>JspSupportServlet</servlet-name> <servlet-class> org.apache.struts2.views.JspSupportServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping>
2,在页面模板中导入jsptag的tld声明(这一步貌似和jsp中tag的声明一样)
- <#assign display=JspTaglibs[ "/WEB-INF/tld/display.tld" ]>
<#assign display=JspTaglibs["/WEB-INF/tld/display.tld"]>
3,
接下来就是使用displaytag了,前面那两步freemarker的文档上有详细的说明,大家只要在文档的索引页面上查找”tag”就能找到了,但
是在第三步就要注意点问题了,也就是把PaginatedList实现的对象实例扔到模板里时要注意的事项。
(1)在<@display.table的name属性中不要再使用${},直接写PaginatedList的对象引用就可以了,比如说
直接写name=”customers”而不要写成name=”${customers}”
(2)不要导入displaytag-el.tld,直接导入displaytag.tld就可以了。
(3)<@display.table>和<@display.column>中的布尔类型不能使用字符串,我们在
jsp中直接使用diplaytag的使用应该是使用字符串,但是在模板中就不能这样写了,而应该使用模板语言的写法,布尔值就直接写布尔值,比如说
export=true,而不能写export=”true”,这样肯定会抛参数不匹配的异常。
(4)注意在<@display.column中使用html语句的使用记得把escapXml属性设置为false,否则
displaytag会对其进行转义,freemarker貌似不会默认给其进行转义,除非使用freemarker的转义命令(velocity的
html转义是要通过配置velocity.properties来实现,而且它直接调用了apache
common包中的转义操作,这样会默认对2字节以上的字符串都进行转义,于是中文都变成了符号,浏览器能解析而人却不能直接阅读,而spring中的转
义方法就没有这个问题)。
下面是一个例子:
- < @display .table name= "products" style= "width:70%;" id= "product" cellspacing= "0" class = "table"
- export=false cellpadding= "0" requestURI= "" >
- <@display .column title= "${xtt}" escapeXml= false class = "columnClass" sortable= true headerClass= "headerClass" >
- <input type="checkbox" name= "entityIds" id= "entityIds" value= "${product.id}" />
- </@display .column>
- <@display .column property= "id" escapeXml= true sortable= true title= "产品 序号" paramId= "entityIds" paramProperty= "id"
- url="/product/prepareUpdateProduct.action" />
- <@display .column property= "serialNumber" escapeXml= true sortable= true title= "商品编号" />
- <@display .column property= "name" escapeXml= true sortable= true title= "商品名称" />
- <@display .setProperty name= "paging.banner.item_name" value= "商品" />
- </@display .table>
<@display.table name="products" style="width:70%;" id="product" cellspacing="0" class="table" export=false cellpadding="0" requestURI=""> <@display.column title="${xtt}" escapeXml=false class="columnClass" sortable=true headerClass="headerClass"> <input type="checkbox" name="entityIds" id="entityIds" value="${product.id}"/> </@display.column> <@display.column property="id" escapeXml=true sortable=true title="产品序号" paramId="entityIds" paramProperty="id" url="/product/prepareUpdateProduct.action"/> <@display.column property="serialNumber" escapeXml=true sortable=true title="商品编号"/> <@display.column property="name" escapeXml=true sortable=true title="商品名称"/> <@display.setProperty name="paging.banner.item_name" value="商品"/> </@display.table>
依照上面这些步骤,我相信感兴趣的同学很快就能在freemarker中使用displaytag了,虽然我在freemarker中使用了
displaytag,但是这并不意味着我支持在freemarker任意使用jsptag的观点,比如一些freemarker本身就带有的功能,判
断,循环,日期格式化等等这些根本不需要导入tag,而且我也反对在页面中使用其他input的tag,虽然这样能够带来客户端验证的优点,但是事实上基
于js验证的客户端框架现在也不少,没有必要为了这个理由把页面上弄得到处都是@ww,而且使用theme之后,页面布局更不容易控制,而且最重要的是这
样使页面设计者更难介入了(这一观点是基于很多外包公司都有专门的页面团队,他们是专业的页面制作人员,当如果公司里没有这样一支团队,那么上面这个结论
就不成立了)。
发表评论
-
displaytag 中文解决
2010-04-10 00:03 2298希望总在你想放弃的前一刻到来,这就算是对坚持的犒赏吧 ... -
扩展displaytag标签库
2010-04-09 11:28 1094下面是本人参考该URL扩展了下displaytag的标签库: ... -
extremeTable
2010-04-01 15:49 963extremeTable,又一个开源taglib ext ... -
extremeTable
2010-04-01 15:33 21220.概述 Home Pag ... -
displaytag1.1调用mssqlserver存储过程进行分页从数据库提取数据
2010-04-01 14:43 929原官方网http://displaytag.sourcef ... -
displaytag在struts中完成大数据量分页显示
2010-04-01 14:38 1322应用displaytag在struts中完成大数据量分页显 ... -
displaytag.properties
2010-04-01 14:01 2221displaytag.properties文件位于displa ... -
displaytag组件实现分页_DisplayTag应用指南_ DisplayTag七宗罪 _displaytag之中文(乱码)解决方案
2010-04-01 13:42 1845DisplayTag 应用指南 【摘 ... -
displaytag标签的使用手册
2010-04-01 13:39 16631.可以给它加上样式等 ... -
DisplayTag简单使用配置翻页
2010-04-01 13:36 1506首页http://displaytag.sourceforge ... -
displaytag标签 浅析
2010-04-01 13:25 1052DisplayTag是一个非常好用的表格显示标签,适合MVC模 ... -
displaytag.css文件中常用的样式说明及修改
2010-04-01 11:01 2697displaytag.css文件中常用的样式说明及修改 1. ... -
displaytag标签的常用属性和方法
2010-04-01 10:59 17591.可以给它加上样式等,也可以定义显示的列 ... -
在Struts2中使用DisplayTag翻页时的ognl.InappropriateExpressionException解决方案
2010-03-31 18:09 2097在struts2中使用displayTag组件进行翻页 ... -
Display Tag使用小记
2010-03-31 14:33 839... -
Struts中使用displaytag简单小教程
2010-03-31 14:26 1199... -
应用displaytag完成大数据量分页显示的例子
2010-03-31 14:23 1234应用displaytag在struts中完成大数据量分页显示, ... -
pager-taglib的安装和使用
2010-03-31 14:21 870... -
pager标记库(分页显示)详解
2010-03-31 14:19 1420一简介, Pager-taglib,支持多种风格的 ... -
displaytag与struts标签间的交互
2010-03-31 14:17 1364不知道为什么,在<display:table> ...
相关推荐
在这个场景中,"displaytag 插件 中文提示" 指的是Displaytag支持中文显示和提示,这对于中文环境下的应用尤其重要。 Displaytag 的主要特点包括: 1. **多语言支持**:Displaytag 支持多种语言,包括中文,通过...
综上所述,DisplayTag是一个强大且易用的JSP表格标签库,它的自动化功能和丰富的特性使得在Web开发中处理表格数据变得更加简单和高效。通过熟练掌握和应用DisplayTag,开发者可以显著提升工作效率,同时提升Web应用...
本部分将详细介绍这三个框架在2.3.15.3、3.2.4和3.2.3版本中的分页查询功能。 Struts2作为Action层框架,提供了对HTTP请求的处理和业务逻辑的封装。在2.3.15.3版本中,Struts2支持通过Interceptor(拦截器)实现...
5. **视图渲染**:在JSP或Freemarker等模板引擎中,利用Struts2插件提供的标签库或者自定义标签,展示分页信息,如页码、总页数等。 6. **前端交互**:通过Ajax或页面重定向,用户可以无刷新地切换页面,同时,前端...
在实际项目中,分页的实现方式多样,例如可以使用开源的分页组件如DisplayTag,也可以自定义实现。在Struts 2中,还可以利用拦截器实现分页逻辑的复用。 在给定的文件名"StrutsHibernate"中,我们可以推测这是一个...
Struts和JDBC是两种在Java Web开发中广泛使用的技术。Struts是一个MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性高的Web应用程序,而JDBC(Java Database Connectivity)是Java中与数据库交互的...
4. **编写视图**:在JSP或FreeMarker模板中,使用Struts2的迭代标签(如`s:iterator`)遍历数据,并展示分页控件。 5. **使用分页插件**:如果使用分页插件,按照其文档配置Action和视图,通常插件会提供预定义的...
这个DEMO项目展示了如何在Struts2框架下实现CRUD(创建、读取、更新、删除)操作,并结合了分页和富文本编辑器的功能。以下是对这些知识点的详细说明: 1. **Struts2框架**:Struts2是Apache软件基金会下的一个开源...
在这个项目中,开发者使用Struts2实现了一系列功能,包括用户登录注册、服务器端数据验证、文件上传与下载以及一个简单的留言讨论区和分页显示。以下将对这些知识点进行详细阐述。 1. **Struts2框架**:Struts2是...
在Struts2中,可以使用插件如DisplayTag或FreeMarker模板配合实现分页。同时,Spring的Pageable接口或MyBatis的PageHelper插件也可以帮助实现分页功能。 至于标签中的“分页 struts2”,说明这个项目重点展示了如何...
在`DisplayTag应用指南`和`Display Tag使用`文档中,可能包含了如何在Struts 2中集成DisplayTag的教程和最佳实践。`displaytag.properties`和`displaytag_zh_CN.properties`是DisplayTag的默认配置和中文语言包,...
6. **Struts2-DisplayTag Plugin**:集成DisplayTag库,提供表格、分页等功能,便于生成复杂的Web表格。 在开发过程中,开发者可以根据项目需求选择合适的插件,通过添加相应的JAR文件到`lib`目录下,并在Struts...
- `displaytag`库提供了分页和排序功能,增强了表格的展示。 - `tiles`库则用于页面布局和组合,可以将页面拆分为多个部分,提高代码复用性。 5. **OGNL(Object-Graph Navigation Language)**: - OGNL是一种...