jsp table标签_烟雨荼楼
- 格式:docx
- 大小:23.85 KB
- 文档页数:6
JSP标签的使用从JSP1.1版开始在JSP页面中就可以使用定制标签了,它允许用户在JSP文件中使用自定义的标签,这样可以使JSP代码更简洁。
由于使用自定义标签可能造成程序员对标签的重复定义,因此从JSP2.0开始,标准标签库(JavaServer Pages Standard Tag Library,JSTL)作为标准的支持,它可以使JSP和Web应用程序的开发进一步简化。
本节首先介绍自定义标签的开发,然后介绍JSTL的使用。
一、自定义标签的开发JSP标签的使用思想与HTML类似。
使用定制标签,使开发人员能够把复杂的功能封装在HTML风格的标签中。
在简单的标签后面,Java代码处理格式化任务,访问外部资源,并进行其他各种处理行为。
创建和使用定制标签一般包含下面四个步骤:(1) 创建标签处理类(tag handler);(2) 创建标签库描述文件;(3) 在部署描述符中说明标签的描述;(在web.xml 2.4之前是正确,2.4之后已经废除)(4) 在JSP文件中引入标签库和使用标签。
1. 创建标签处理类下面通过一个简单的例子说明完整过程。
程序HelloTag.java是一个标签处理类。
标签所要完成的功能在标签处理类中实现。
该标签实现的功能是输出蓝色的”Hello,World!”消息。
标签处理类一般要实现某个标签接口或继承某个标签的实现类。
import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;public class HelloTag implements Tag {private PageContext pageContext;private Tag parentTag;public void setPageContext(PageContext pageContext){this.pageContext = pageContext;}public void setParent(Tag parentTag){this.parentTag = parentTag;}public Tag getParent(){return this.parentTag;}public int doStartTag() throws JspException{try{JspWriter out = pageContext.getOut();out.print(“<font color=‟#ff0000‟>Hello,World!</font>”);}catch(Exception e){throw new JspException(“Error in HelloTag.doStartTag()”);}return SKIP_BODY;}public int doEndTag() throws JspException{return EV AL_PAGE;}public void release(){ }}注意:要正确编译该文件,必须将install-dir/commom/lib/jsp-api.jar加到CLASSPA TH 路径中。
HTML结构<html><head><title>标题<title></head><body>..........文件内容..........</body></html>版面1.标题文字<h#>..........</h#> #=1~6;h1为最大字,h6为最小字2.字体变化<font>..........</font>【1】字体大小<font size=#>..........</font> #=1~7;数字愈大字也愈大【2】指定字型<font face="字型名称">..........</font>【3】文字颜色<font color=#rrggbb>..........</font> rr:表红色(red)色码 gg:表绿色(green)色码 bb:表蓝色(blue)色码3.显示小字体<small>.....</small>4.显示大字体<big>.......</big>5.粗体字<b>.....</b>6.斜体字<i>....</i>7.打字机字体<tt>...</tt>8.底线<u>........</u>9.删除线<strike>.....</strike>10.下标字<sub>.......</sub>11.上标字<sup>......</sup>12.文字闪烁效果<blink>......</blink>13.换行<br>14.分段<p>15.文字的对齐方向<p align="#"> #号可为 left:表向左对齐(预设值) center:表向中对齐 right:表向右对齐 P.S.<p align="#">之後的文字都会以所设的对齐方式显示,直到出现另一个<p align="#">改变其对齐方向,或遇到<hr>ⅱ<h#>标签时会自动设回预设的向左对齐。
16.分隔线<hr>【1】分隔线的粗细<hr size=点数>【2】分隔线的宽度<hr size=点数或百分比>【3】分隔线对齐方向<hr align="#"> #号可为 left:表向左对齐(预设值) center:表向中对齐 right:表向右对齐【4】分隔线的颜色<hr color=#rrggbb>【5】实心分隔线<hr noshade>17.向中对齐<center>..........</center>18.依原始样式显示<pre>..........</pre>19.<body>指令的属性【1】背景颜色 -- bgcolor <body bgcolor=#rrggbb>【2】背景图案 -- background <body background="图形文件名">【3】设定背景图案不会卷动 -- bgproperties <body bgproperties=fixed>【4】文件内容文字的颜色 -- text <body text=#rrggbb>【5】超连结文字颜色 -- link <body link=#rrggbb>【6】正被选取的超连结文字颜色 -- vlink <body vlink=#rrggbb>【7】已连结过的超连结文字颜色 -- alink <body alink=#rrggbb>20.注解<!--..........-->21.特殊字元表示法符号语法<&lt>&gt& &amp" &quot空白&nbsp图片1.插入图片<img src="图形文件名">2.设定图框 -- border <img src="图形文件名" border=点数>3.设定图形大小 -- widthⅱheight <img src="图形文件名" width=宽度点数 height=高度点数>4.设定图形上下左右留空 -- vspaceⅱhspace <img src="图形文件名" vspace=上下留空点数 hspace=左右留空点数>5.图形附注<img src="图形文件名" alt="说明文字">6.预载图片<img src="高解析度图形文件名" lowsrc="低解析度图形文件名"> P.S.两个图的图形大小最好一致7.影像地图(Image Map)<img src="图形文件名" usemap="#图的名称"><map name="图的名称"><area shape=形状 coords=区域座标列表 href="连结点之URL"><area shape=形状 coords=区域座标列表 href="连结点之URL"><area shape=形状 coords=区域座标列表 href="连结点之URL"><area shape=形状 coords=区域座标列表 href="连结点之URL"></map>【1】定义形状 -- shapeshape=rect:矩形 shape=circle:圆形 shape=poly:多边形【2】定义区域 -- coordsa.矩形:必须使用四个数字,前两个数字为左上角座标,后两个数字为右下角座标例:<area shape=rect coords=100,50,200,75 href="URL">b.圆形:必须使用三个数字,前两个数字为圆心的座标,最后一个数字为半径长度例:<area shape=circle coords=85,155,30 href="URL">c.任意图形(多边形):将图形之每一转折点座标依序填入例:<area shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="URL">表格1.定义表格<table>..........</table>【1】设定边框的厚度– border <table border=点数>【2】设定格线的宽度– cellspacing <table cellspacing=点数>【3】设定资料与格线的距离– cellpadding <table cellpadding=点数>【4】调整表格宽度– width <table width=点数或百分比>【5】调整表格高度– height <table height=点数或百分比>【6】设定表格背景色彩– bgcolor <table bgcolor=#rrggbb>【7】设定表格边框色彩– bordercolor <table bordercolor=#rrggbb>2.显示格线<table border>3.表格标题<caption>..........</caption>表格标题位置 -- align<caption align="#"> #号可为 top:表标题置于表格上方(预设值)bottom:表标题置于表格下方4.定义列<tr>5.定义栏位《1》<td>:靠左对齐《2》<th>:靠中对齐ⅱ粗体【1】水平位置 -- align <th align="#">#号可为 left:向左对齐center:向中对齐 right:向右对齐【2】垂直位置 -- align <th align="#"> #号可为top:向上对齐 middle:向中对齐bottom:向下对齐【3】栏位宽度– width <th width=点数或百分比>【4】栏位垂直合并– rowspan <th rowspan=欲合并栏位数>【5】栏位横向合并– colspan <th colspan=欲合并栏位数>清单一、目录式清单<dir><li>项目1 <li>项目2 <li>项目3 </dir> P.S.目录式清单每一个项目不能超过20个字元(即10个中文字)二、选项式清单<menu><li>项目1 <li>项目2 <li>项目3 </menu>三、有序号的清单<ol><li>项目1 <li>项目2 <li>项目3 </ol>【1】序号形式 -- type <ol type=#>或<li type=#> #号可为 A:表以大写英文字母AⅱB ⅱCⅱD...做为项目编号 a:表以小写英文字母aⅱbⅱcⅱd...做为项目编号 I:表以大写罗马数字做为项目编号 i:表以小写罗马数字做为项目编号 1:表以阿拉伯数字做为项目编号(预设值)【2】起始数字 -- start <ol start=欲开始计数的序数>【3】指定编号 -- value<li value=欲指定的序数>四、无序号的清单<ul><li>项目1 <li>项目2 <li>项目3 </ul>【1】项目符号形式 -- type <ul type=#>或<li type=#> #号可为 disc:实心圆点(预设值) circle:空心圆点 square:实心方块【2】原始清单 -- plain <ul plain>【3】清单排列方式 -- warp 《1》清单垂直排列<ul warp = vert>《2》清单水平排列<ul warp = horiz>五、定义式清单<dl><dt>项目1 <dd>项目1说明<dt>项目2 <dd>项目2说明<dt>项目3 <dd>项目3说明</dl>紧密排列 -- compact <dl compact> P.S.如此可使<dt>的内容与<dd>的内容在同一行,仅以数格空白相隔而不换行,但若<dt>的文字超过一定的长度后,compact的作用就消失了!表单一、基本架构<form action="处理资料用的CGI程式之URL"或"mailto:电子信箱的URL" method="get或post"> .......... .......... .......... </form>二、输入文件型表单<form action="URL" method="post"><input><input> .......... .......... </form>【1】栏位类型 -- type <input type=#> #号可为 text:文字输入 password:密码 checkbox:多选钮 radio:单选钮 submit:接受按钮 reset:重设按钮 image:图形钮 hidden:隐藏栏位【2】栏位名称 -- name <input name="资料栏名"> P.S.若type为submitⅱreset则name 不必设定【3】文件上的预设值 -- value<input value="预设之字串">【4】设定栏位的宽度 -- size <input size=字元数>【5】限制最大输入字串的长度 -- maxlength <input maxlength=字元数>【6】预设checkbox或radio的初值 -- checked <input type=checkbox checked><input type=radio checked>【7】指定图形的URL -- src <input type=image src="图档名">【8】图文对齐 -- align <input type=image align="#"> #号可为 top:文字对齐图片之顶端 middle:文字对齐图片之中间 buttom:文字对齐图片之底部三、选择式表单<form action="URL" method="post"><select><option><option> .......... .......... </select></form>A、<select>的属性【1】栏位名称 -- name <select name="资料栏位名">【2】设定显示的选项数 -- size <select size=个数>【3】多重选项 -- multiple <select multiple>B、<option>的属性【1】定义选项的传回值 -- value<option value="传回值">【2】预先选取的选项 -- selected <option selected>四、多列输入文字区表单<form action="URL" method="post"><textarea> .......... .......... </textarea></form>【1】文字区的变数名称 -- name <textarea name=变数名称>【2】设定文字输入区宽度 -- cols <textarea cols=字元数>【3】设定文字输入区高度 -- rows <textarea rows=列数>【4】输入区设定预设字串<textarea>预设文字</textarea>【5】自动换行与否 -- wrap <textarea wrap=#> #号可为 off:表输入的文字超过栏宽时,不会自动换行(预设值) virtual:表输入的文字在超过栏宽时会自动换行链接一、连结至其他文件<a href="URL">说明文字或图片</a>二、连结至文件内之某一处(外部连结)《1》起点<a href="档名#名称">..........</a>《2》终点<a name="名称">三、frame的超连结【1】开启新的浏览器来显示连结文件 -- _blank <a href="URL" target=_blank>【2】显示连结文件於目前的frame -- _self <a href="URL" target=_self>【3】以上一层的分割视窗显示连结文件 -- _parent <a href="URL" target=_parent>【4】以全视窗显示连结文件 -- _top <a href="URL" target=_top>【5】以特定视窗显示连结文件 --<a href="URL" target="特定视窗名称">FRAME一、分割视窗指令<frameset>..........</frameset>【1】垂直(上下)分割 -- rows<frameset rows=#> #号可为点数:如欲分割为100,200,300三个视窗,则<frameset rows=100,200,300>;亦可以*号代表,如<frameset rows=*,500,*>百分比:如<frameset rows=30%,70%>,各项总和最好为100%【2】水平(左右)分割 -- cols <frameset cols=点数或百分比>二ⅱ指定视窗内容 -- <frame><frameset cols=30%,70%><frame><frame></frameset>【1】指定视窗的文件名称 -- src <frame src=HTML档名>【2】定义视窗的名称– name <frame name=视窗名称>【3】设定文件与上下边框的距离– marginheight <frame marginheight=点数>【4】设定文件与左右边框的距离– marginwidth <frame marginwidth=点数>【5】设定分割视窗卷轴 -- scrolling<frame scrolling=#> #号可为 yes:固定出现卷轴no:不出现卷轴 auto:自动判断文件大小需不需要卷轴(预设值)【6】锁住分割视窗的大小 -- noresize <frame noresize>。
JSTL 入门:表达式语言JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
在developerWorks 上其新系列的第一篇文章中,软件工程师Mark Kolb 向您展示了如何使用JSTL 标记来避免在JSP 页面中使用脚本编制元素。
您还将了解如何通过从表示层删除源代码来简化软件维护。
最后,您将了解JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对JSTL 操作指定动态属性值。
JavaServer Pages(JSP)是用于J2EE 平台的标准表示层技术。
JSP 技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。
脚本编制元素允许在JSP 页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。
操作将计算操作封装到很象HTML 或XML 标记的标记中,JSP 页面的模板文本通常包含这些标记。
JSP 规范只将几种操作定义成了标准,但从JSP 1.1 开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。
JSP 标准标记库(JSTL)是JSP 1.2 定制标记库集,这些标记库实现大量服务器端Java 应用程序常用的基本功能。
通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。
当然,您可以使用JSP 脚本编制元素(scriptlet、表达式和声明)来实现此类任务。
例如,可以使用三个scriptlet 实现条件内容,清单 1 中着重显示了这三个scriptlet。
但是,因为脚本编制元素依赖于在页面中嵌入程序源代码(通常是Java 代码),所以对于使用这些脚本编制元素的JSP 页面,其软件维护任务的复杂度大大增加了。
JSTL标签详解JSTL(JSP标准标签库)介绍JSTL(JSP标准标签库)介绍前言从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL (JavaServer Pages Standard Tag Library)的诞生。
JSTL简介JSTL是一个不断完善的开放源代码的JSP标签库,是由apache 的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。
但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为,最终发布版为1.0。
JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。
标签库目前支持四种标签:Core支持JSP中的一些基本的操作;XML processing支持XML文档的处理;I18N capable formatting支持对JSP页面的国际化;Database access (SQL)支持JSP对数据库的操作。
由于本人水平有限,本文仅介绍Core标签,如有兴趣,可一起探讨其它三种标签的使用与扩充。
EL语言介绍EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。
在JSTL中,EL语言在JSTL属性值中使用。
EL语言只能通过建立表达式${exp1}来进行调用。
在属性值中使用表达式有三种方式。
1、 value属性包含一个表达式<some:tag value="${expr}"/>在这种情况下,表达式值被计算出来并根据类型转换规则赋值给v alue属性。
比如:<c:out value="${username}" />中的${usernam e}就是一个EL,它相当于JSP语句<%=request.getAttribute(“user name”)%>或<%=session.getAttribute(“username”)%>2、 value属性包含一个或多个属性,这些属性被文本分割或围绕<some:tag value="some${expr}${expr}text${expr}"/>在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性3、 value属性仅仅包含文本<some:tag value="sometext"/>在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类型。
nishenmeJSP页面常用四种标签:EL: ${}jstl(sun apache):<%@ taglib prefix="c" uri="/jsp/jstl/core" %> <%@ taglib prefix="fn"uri="/jsp/jstl/functions"%> <%@ taglib prefix="fmt" uri="/jsp/jstl/fmt" %> struts-tags:<%@ taglib prefix="s" uri="/struts-tags"%> <s:form><s:property>……Ognl(Struts)一、JSP EL语言定义E L(Expression Language)目的:为了使JSP写起来更加简单。
表达式语言的灵感来自于ECMAScript 和XPath 表达式语言,它提供了在JSP 中简化表达式的方法。
它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到Java 类中静态方法的可扩展函数以及一组隐式对象。
EL 提供了在JSP 脚本编制元素范围外使用运行时表达式的功能。
脚本编制元素是指页面中能够用于在JSP 文件中嵌入Java 代码的元素。
它们通常用于对象操作以及执行那些影响所生成内容的计算。
JSP 2.0 将EL 表达式添加为一种脚本编制元素。
二、JSP EL简介1、语法结构${expression}2、[ ]与.运算符EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。
JSP页面中自定义标签详解教程标准JSP标签是用来调用JavaBean组件的操作,处理定向请求以简化JSP页面开发与维护。
JSP技术提供了一种封装其它动态类型的机制——自定义标签,它扩展了JSP语言。
自定义标签通常发布在标签库中,该库定义了一个自定义标签集并包含实现标签的对象。
一些功能可以通过自定义标签来实现,包括对隐含对象的操作,处理表单,访问数据库集其它企业级服务,如e-mail,目录服务,处理流控制。
JSP标签库由精通Java语言的开发者及精于访问数据机器它服务的专家来创建,由网络应用设计者来使用,以集中精力来解决表现而不是如何访问企业服务。
业就是鼓励分开库的开发者与使用者相分离,自定义标签通过封装实现了生产率的提高。
标签库在JSP技术中受到广泛注意。
要更多的了解标签库可以访问以下网址:/products/jsp/taglibraries.html什么是自定义标签?自定义标签是用户定义的JSP语言元素。
当JSP页面包含一个自定义标签时被转化为servlet,标签转化为对称为tag handler的对象的操作。
接着当servlet执行时Web container 调用那些操作。
自定义标签有着丰富的特点,它们可以:1、可以通过调用页面传递的属性进行自定义;2、可以访问对于JSP页面可能的所有对象;3、可以修改由调用页面产生的响应。
4、可以相互间通信。
你可以创建并初始化一个JavaBean组件,创建一个变量引用标签中的bean,接着在其它的标签中引用该bean.5、可以在一个标签中嵌套另一个,可以在JSP页面中进行复杂的交互。
JSP页面的例子这章描述的任务包括使用及定义标签。
标签库Struts为建立一个国际化的网络应用提供了一个实现设计模式为Model-View-Control的框架。
该标签库包括全面的功能用于处理:。
HTML forms。
Templates。
JavaBeans components。
JSP Display标签的使用TE收藏TE Display Tag Lib是一个标签库用来处理jsp网页上的Table功能非常强可以对的Table进行分页、数据导出、分组、对列排序等等反正我在做项目时需要的功能它都给我提供了而且使用起来非常的方便。
能够大大减少代码量。
介个是Display Tag的官方网站。
首先当然是要下载它的jar包了这里可以下载到最新的版本。
将jar包放到WEB-INF的lib文件夹下。
另外还需要两个辅助包apache的commons-lang和standard 包更多的辅助包可以在这里下载。
在web.xml下添加一个filter exportFilter org.displaytag.filter.ResponseOverrideFilter 在jsp页面做一个引用首先我们定义一个list 当我们想在jsp页面上显示这个list时我们只需要写一句话display tag会自动生成一个table 如果list是从控制层抛出来的name可使用EL表达式表示这是最简单的display tag的使用我们可以给它加上样式等也可以定义显示的列下面的table显示复杂一些如果想要给它加个链接也很简单下面的代码给name加了连接并附带id参数email也自动连接到mailto:XXX 下面介绍几个Display最常用的功能更多功能请参考/index.jsp。
1. 分页如果想对代码分页只需在display:table标签中添加一项pagesize每页显示行数如2. 对列排序display tag可对列进行排序就是点击列名对该列的数据进行排序。
你只需对想要排序的列添加sorttrue 就OK如下面的代码可对前三列进行排序。
在display:table中添加defaultsort列数可默认对指定的列排序。
如果table有分页Display Tag默认只对当前页进行排序如果想对整个list排序可以在display:table之间添加一段代码3. 导出数据在display:table中添加exporttrue看看会出现什么Display Tag默认会提供三种数据导出方式CSV、Excel、XML 。
另外Display Tag还可以导出为PDF格式在/itext/下载一个辅助包iText.jarcopy到lib目录下然后在display:table之间添加一段代码大功告成。
4. Display Tag的属性设置前面所说的display:setProperty 是一种改变Display Tag属性的方法但是在每个jsp中都要写太麻烦了。
Display Tag中设置了很多默认的属性它有一个专门的属性文件是在它的jar包中的displaytag/properties/TableTag.properties 想要改变它的默认属性我们可以在WEB-INFclasses下新建一个文件displaytag.properties 仿照TableTag.properties中属性的格式设置需要修改的属性。
TableTag.properties中的messages中设置的是显示在页面上的提示信息。
默认是英文的我们可以把它改为中文的。
不过这里只能使用unicode就是说中文字符必须转换为unicode码这个可以使用jdk自带的native2ascii.exe进行转换。
6. displaytag的翻页机制这可能是displaytag的局限性了它的翻页机制是这样的如果一个list中有10000个bean按照它的机制如果是第一页每页n 条它会把前n条数据取出来然后再把剩余的10000n条删除当你点击页面“2”的时候它再从后台绕一圈把第二页的数据也就是把第n1-2n条记录取出来把剩余的删除。
这样它实现了翻页又防止了内存占用过大。
但是不管怎么说它还是有一个取出所有条数的动作的在极大数据量的情况下有可能造成内存溢出。
8. displaytag中decorator一例importorg.displaytag.decorator.TableDecorator import java.util.HashMap import java.text.SimpleDateFormat import java.util.Date public class BulletinListDecorator extends TableDecorator private String bulletinId null private String title null private SimpleDateFormat sdf null private int i 0 public BulletinListDecorator sdf new SimpleDateFormatyy-MM-dd public String getBulletinId i1 return i public String getTitle bulletinId StringHashMapthis.getCurrentRowObject.getbulletinId title StringHashMapthis.getCurrentRowObject.gettitle return title public String getLastPubD return sdf.formatDateHashMapthis.getCurrentRowObject.getlastPubD 其中bulletinList是一个ArrayListtitleKey指向了properties文件补充一在display:table 中添加自定义的列用display:column 将其属性media的值设置为html即可如下例子二在写对应于bean里面的列时display:column 中property对应的值是bean里面的属性的名字大小写必须一致例如有个actionform类有属性private String_Name 则property的值也必须为_Name否则提示找不到列。
转displaytag 学习笔记总结1 6列表的子集offset 为第一个数据在mylist中的序号。
length 为显示的记录条数。
7自动设置链接能够把此列的内容作为链接连接的url和内容一致。
当然必须格式有效的url否则写了也没有连接。
自认为这个功能一般。
因为连接的内容和显示的内容通常不一样。
当然可以在在这里给某列指定所有的链接为同一个连接。
或者sdfs两者效果是一样的。
那么如果连接的url不是列内容而且每行的链接都不相同这个时候怎么办就好像广告列表有商户名称商户名称是一个连接连接到商户的具体信息页面。
连接的url肯定不同。
如何处理现在还不知道接着往下看。
8使用装饰类来转换数据。
用来转换数据内容的。
一般用来格式化信息。
此类必继承TableDecorator。
顺便介绍一个格式化时间的包ng.time.FastDateFormat 格式化金钱的包java.text.DecimalFormat 思路就是覆盖List中具体类型的getXXX方法。
this.getCurrentRowObject 得到当前行的数据。
this.getListIndex 得到当前行的序号。
之后就转化为List中存放的具体类型之后得到某列的数据。
返回格式化后的数据。
另外我看到装饰类增加了一些getXXX方法这些方法并没有在ListObject中定义。
还不知道这样做有什么好处这样仅仅对一列数据进行格式化需要继承ColumnDecorator 需要实现String decorateObject columnValue方法。
此方法同样接受一个Object参数此参数就是对象的某个具体属性值直接转化为对应类型然后格式化返回String。
9建立动态链接。
两种方式可以建立动态链接。
第一种方式直接在页面上使用http://baseurl/paramidcolumnvalue http://baseurl/paramidscope范围内的名字为name的值http://baseurl/paramid名字为propertyname 的属性值这种方式处理简单的链接十分有效但是链接参数值如果通过查询数据库等比较复杂的方式得到的话这种方式就不适应了。
这时候就必须使用第二种方法。
第二种方法在装饰类中获得连接。
装饰类多定义一些getXXX方法那么页面上就可以使用来使用装饰类de getXXX方法。
好这样一来在装饰类的getXXX方法里得到此行对象这样对象的各个属性就都能得到之后去查数据库也好去完成负责的判断逻辑也好都很容易实现别忘了然后拼装起来并写成一个这样的字符串返回。
好页面直接一句话就可得到此拼装的《a》了。
第二种方法比较好些因为可以显得更灵活。
想怎么写就怎么写。
第一种方法就是简单地实现。
10翻页。
1怎么得到每行的序号使用肯定好用。
但是这种方式就不好用。
也不知道差哪了。
翻页很简单。
就是在这样来指定每页的数量就可以了。
自动出现换页的索引上下页等等东西。
实在是方便。
但是问题就是一次传下来很多东西性能不好。
等一会看看如何改良。
11自动设置排序可以设定默认时按照哪列排序是升序还是降序。
本例设置第一列默认时降序。
每列都得对象都必须实现了Comparable接口才能被设置成sortabletrue. 如果没有实现Comparable那么必须写一个装饰类。
另外需要注意他只对当前页面进行排序。
而不是全部。
在翻页时特别需要注意。
要想实现全部的排序那么必须重新写Action 往网页传新的List了。
12如何分组按照某列进行分组显示。
这个功能真不错。
这样不仅仅结果可以分组而且还可以省略掉重复的数据例如city列project列都有A B AB 两行那么第二行这两列就不显示了。
同样只能对当前页进行分组。
注意第一列一定要1第二列一定是2否则出NUllPoint 错误。
13统计好东西啊。
可以对分组进行统计也可以对所有行进行统计。
主要靠TableDecorator类finishRow返回统计结果放到页面去显示。
TableDecorator类方法getDecoratedObject得到整个结果集。
一般把它转化成List因为大多数情况下结果是存放在List中的。
public final String finishRow 当一行结束时执行此方法。
所以用它来判断是否需要计算城市统计抑或是全部统计。
相当于事件处理。
返回的字符串也将在页面上显示。
本例返回了...这样的三份。
这样就在表中嵌套进了三行。
用来显示统计是足够了。
14导出数据很简单。
talbe里设置export“true”就行了。