DisplayTag详解
- 格式:doc
- 大小:24.62 KB
- 文档页数:24
html-display标签
标签可以分为⾏内标签和⾏间块级标签,
块级标签:占⼀⾏,如果⽗标签没有限⾼度,⼦标签会⾃动扩展⽗标签的⾼度,⾏内标签不能, 可以设置宽度⾼度 padding margin
⾏内标签:
不能设置宽度⾼度 padding margin
标签不能⾃动伸展
可以通过display灵活的将标签在⾏内和⾏间随意转换
display:inline;转换成⾏内标签
display:block;转换成块级标签
display:inline-block;即有⾏内标签的属性也有块极标签的属性
display:none;让标签消失,可以做很多功能,调⽤js
当⾏间内联标签需要设置宽度⾼度或padding margin时就要把display设置成inline-block;
<a style="border: 1px solid red; height: 40px;width: 40px;display: inline-block;">aaa</a>
<a>bbb</a>。
display:table常⽤属性解释1、官⽅⽹址:2、应⽤举例: <display:table name="requestScope.pageList" id="curPage" class="table table-striped" sort="external" requestURI="${resource}/test/list.do" export="true">3、常⽤属性:name 指向需要显⽰的List集合或者其他集合,集合中每个元素对应表格中⼀⾏,⽽元素(⼀般是bean对象)的属性对应的表格的列,如果元素是字符串,那么显⽰字符串本⾝,只有⼀列。
id 代表当前的bean对象。
也就是可以在<display:column>中得到bean中的内容。
还有⼀点,如果写了这个属性,就获得⼀个额外的属性,⾏号属性,从1开始获取⾏号⽅式是使⽤EL表达式:${XXX_rowNum},XXX代表id属性值。
class就是正常表格的class属性,⽤来引⽤CSS样式offset这个属性是⽤来显⽰List的⼀部分,作⽤是控制从List的第⼏个元素开始显⽰。
可以配合length属性使⽤。
length这个属性是⽤来显⽰List的⼀部分,作⽤是显⽰List中的多少个元素。
可以配合offset属性使⽤。
sort默认值是page,表⽰排序当前页⾯中显⽰的数据,不会排序整个list中的数据,相反若是值为list,则代表排序整个list中的数据。
defaultorder默认值是ascending,升序排列,若是值为descending,表⽰降序排列。
该属性是控制defaultsort属性的排列状况的。
defaultsort 默认以哪⼀列排序,以数字1,2,3...指明该列,实际的作⽤就是页⾯加载的时候,⽤户还没有点击的时候,就已经以该列排序了,⾄于是升序还是降序则是由defaultorder指明。
CSS中display对布局的影响以及元素display的默认值看到前端越来越多的mvc框架出现,之前偶尔还看到有OOCSS(⾯向对象的CSS编程)的⽂章。
所以可以这样理解,前端HTML页⾯的所有元素(tag),也都可以理解对象。
每个对象有⾃⾝的属性,以及每个对象与其他对象的关系。
关系中最重要也是本⽂讨论的是显⽰时候的位置关系。
每个HTML对象除了与其他HTML对象(标签)有关系之外,还有对象在显⽰时与浏览器或者windows对象的关系。
位置关系也就是页⾯的布局。
如果能将合适的对象根据需要放在合适的位置,并与其他对象和睦相处,界⾯就可以按照设计者的想法实现了。
《下⾯内容摘⾃⽹络,帮助理解和记录》根据CSS规范的规定,每⼀个⽹页元素都有⼀个display属性,⽤于确定该元素的类型,每⼀个元素都有默认的display属性值。
⽐如div元素,它的默认display属性值为“block”,成为“块级”元素(block-level);⽽span元素的默认display属性值为“inline”,称为“⾏内”元素。
div这样的块级元素,就会⾃动占据⼀定矩形空间,可以通过设置⾼度、宽度、内外边距等属性,来调整的这个矩形的样⼦;与之相反,像“span”、“a”这样的⾏内元素,则没有⾃⼰的独⽴空间,它是依附于其他块级元素存在的,因此,对⾏内元素设置⾼度、宽度、内外边距等属性,都是⽆效的。
块元素⼀般都从新⾏开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P"。
“form"这个块元素⽐较特殊,它只能⽤来容纳其他块元素。
如果没有css的作⽤,块元素会顺序以每次另起⼀⾏的⽅式⼀直往下排。
⽽有了css以后,就可以改变这种html的默认布局模式,把块元素摆放到想要的位置上去。
⽽不是每次都另起⼀⾏。
需要指出的是,table标签也是块元素的⼀种,table based layout和css based layout从⼀般使⽤者(不包括视⼒障碍者、盲⼈等)的⾓度来看这两种布局,除了页⾯载⼊速度的差别外,没有其他的差别。
英文display的汉语是什么意思英文display的汉语是什么意思汉语是汉族的语言,是我国的主要语言。
现代汉语的标准语是普通话。
以下是店铺精心整理的英文display的汉语是什么意思,希望对大家有所帮助。
display的汉语意思英 [dsple] 美 [dsple]第三人称单数:displays第三人称复数:displays现在分词:displaying过去分词:displayed过去式:displayed名词显示器; 展览,陈列; 陈列品,展览品; 炫耀及物动词显示; 陈列; 展开,伸展; 夸示,炫耀不及物动词 (计算机屏幕上)显示例句1. Children enjoy a fireworks display.孩子们喜爱看烟火。
2. I like the way the displays are arranged in the museum.我喜欢那个博物馆里展览品陈列的方式。
3. He made a display of his learning.他夸耀自己有学问。
display的单语例句1. Demonstrators in Hong Kong display national flags duringa protest on Sunday against Japan's decision to " buy " the Diaoyu Islands.2. Rooney believes too much has been read into England's display against the US, who were gifted their equaliser by an error by goalkeeper Robert Green.3. And judging by some of the vehicles on display, they may be right.4. This seeming hodgepodge by Zhu Jingyi turns out to bemarvelous art now on display at the Room With a View gallery in Shanghai.5. It was also a chance for the PLA to display the calibre of its military.6. The first features the display of 41 Song - and Yuan - dynasty calligraphic works and paintings not yet shown outside the Palace Museum.7. More than 240 ink paintings and calligraphic works by more than 100 artists from across the country are on display.8. The British press spoke in praise of the spectacular Beijing Olympics opening ceremony unanimously, calling it the best ever and a stunning display of China's rising confidence.9. Organized by Double Win Capital, the exhibition will display more than 100 works by 16 leading Chinese modern artists.display的词典解释1. 展示;展览;陈列If you display something that you want people to see, you put it in a particular place, so that people can see it easily.e.g. Among the protesters and war veterans proudly displaying their medals was Aubrey Rose...在抗议者和骄傲地展示勋章的退伍老兵中,就有奥布里·罗斯。
简介:Row取个别名newsInformationList 结果集Pagesize 每页显示的记录数Size 单元格大小跟单元格内容多少有关<display:column property="articleTitile" title="标题" />column 代表一行articleTitile对象属性 title 此列标题名,就想每个table列的第一行显示的内容。
Sort 排序问题例题页面:<display:table id="row" name="${newsInformationList}" class="its" pagesize="10" export="false" size="resultSize" partialList="true" sort="external"decorator="org.displaytag.decorator.TotalTableDecorator"requestURI="/admin/newsInformationListController.do?method=listByName"><display:column property="articleTitile" title="标题" /><display:column property="updateDate" title="最后跟新时间" /><display:column title="操作"><c:choose><c:when test="${row.articleType eq '0'}"><ahref="/admin/newsInformationListController.do?method=see&id=${row.id}">浏览</a> <c:if test="${loadrole=='超级管理员'}"><ahref="/admin/newsInformationListController.do?method=edit&id=${row.id}">编辑</a> </c:if><c:if test="${loadrole=='销售人员'}"><span style="text-decoration :line-through;"> 编辑 </span></c:if></c:when><c:otherwise><ahref="/admin/newsInformationListController.do?method=seeTwo&id=${row.id}&url=${row.articleUrl}">浏览</a> <span style="text-decoration :line-through;"> 编辑 </span></c:otherwise></c:choose><c:if test="${loadrole=='超级管理员'}"><ahref="/admin/newsInformationListController.do?method=del&id=${row.id}&u serId=${userId }">删除</a></c:if><c:if test="${loadrole=='销售人员'}"><span style="text-decoration :line-through;"> 删除 </span></c:if></display:column></display:table>Action写法:方法内容:String actiocleName = request.getParameter("titleName");int pageNumber = ParamUtil.getInt(request, "d-16544-p",1);int pageSize = 10;Page page = new Page(pageNumber,pageSize);page=newsInformationManager.getPageForRole(page, actiocleName);List<NewsInformation> newsInformationList = page.getList();System.out.println(newsInformationList.size() + " size===========");if(newsInformationList.size()==0){model.put("newsInformationList", null);}else{model.put("newsInformationList", newsInformationList);}request.setAttribute("resultSize", page.getTotalRecord());model.put("titleName",actiocleName);model.put("newsInformationList",newsInformationList);model.put("pageNumber",pageNumber);String userId = request.getParameter("userId");request.setAttribute("userId", userId);return new ModelAndView("../view/admin/newsInformationList",model);其中有调用到page方法如下package cn.eol.sou.back.page;import java.io.Serializable;import java.util.List;@SuppressWarnings("serial")public class Page implements Serializable {private int currentPage;private int totalPage;private boolean hasNextPage;private boolean hasPrevPage;private int totalRecord;private List list;private int pageSize;private int PageNumber;private int PerPage;private void initPage(){currentPage = 1;totalPage = 0;hasNextPage = false;hasPrevPage = false;totalRecord = 0;list = null;pageSize = 20;}public Page(){initPage();}public Page(int page,int pageSize){initPage();setPageSize(pageSize);setCurrentPage(page);}public Page(int page){initPage();setCurrentPage(page);}public int getCurrentPage() {return currentPage;}public int getStartRecord(){int s = (this.currentPage-1)*this.pageSize;if(s>=this.totalRecord)return this.totalRecord;return s;}public int getEndRecord(){int s = this.currentPage*pageSize;if(s>=this.totalRecord)return this.totalRecord;return s;}public void setCurrentPage(int currentPage) {if(currentPage<=0)currentPage = 1;this.currentPage = currentPage;}public boolean isHasNextPage() {return hasNextPage;}public boolean isHasPrevPage() {return hasPrevPage;}public List getList() {return list;}public void setList(List list) {this.list = list;}public int getTotalPage() {return totalPage;}private void setTotalPage(int totalPage) {if(totalPage<=0)totalPage = 1;this.totalPage = totalPage;if(this.currentPage>totalPage)this.currentPage = totalPage;if(this.currentPage>= totalPage)this.hasNextPage = false;elsethis.hasNextPage = true;if(this.currentPage<=1)this.hasPrevPage = false;elsethis.hasPrevPage = true;}public int getTotalRecord() {return totalRecord;}public void setTotalRecord(int totalRecord) {if(totalRecord <= 0){initPage();}else{int p = totalRecord/this.pageSize;if(totalRecord%this.pageSize>0)p++;setTotalPage(totalRecord%this.pageSize>0?(totalRecord/this.pageSi ze+1):totalRecord/this.pageSize);this.totalRecord = totalRecord;}}public int getPageSize() {return pageSize;}private void setPageSize(int pageSize) {if(pageSize<=0)pageSize = 20;this.pageSize = pageSize;}public int getPageNumber() {return PageNumber;}public void setPageNumber(int pageNumber) {PageNumber = pageNumber;}public int getPerPage() {return PerPage;}public void setPerPage(int perPage) {PerPage = perPage;}}getPageForRole方法service只是直接调用的dao方法,不在写,直接写dao方法第二个参数是结果集塞选条件,无条件可为空,第一个参数及page对象代码如下注意:page必须为final类型,表示只要创建之后就不许修改,及常量!!(service参数同样):public Page getPageForRole(final Page page,String filter){String hql="";if(filter !="" && filter!=null){hql = "from NewsInformation where articleTitile like '%"+filter+"%' order by id desc";page.setTotalRecord(getTotal("select count(*) from NewsInformation where articleTitile like '%"+filter+"%'"));}else{hql = "from NewsInformation order by id desc";page.setTotalRecord(getTotal("select count(*) from NewsInformation "));}final int start=page.getStartRecord();final int pageSize=page.getPageSize();final String sql=hql;List<NewsInformation> list = getHibernateTemplate().executeFind(new HibernateCallback(){public Object doInHibernate(Session session) throws HibernateException, SQLException {Query query = getSession().createQuery(sql);query.setFirstResult(start);query.setMaxResults(pageSize);List<NewsInformation> list = new ArrayList<NewsInformation>();list = query.list();return list;}});page.setList(list);return page;}。
CSSdisplay属性详解display的所有属性{/* CSS 1 */display: none;display: inline;display: block;display: list-item;/* CSS 2.1 */display: inline-block;display: table;display: inline-table;display: table-cell;display: table-column;display: table-column-group;display: table-footer-group;display: table-header-group;display: table-row;display: table-row-group;display: table-caption;/* CSS 2.1 *//* CSS 3 */display: inline-list-item;display: flex;display: box;display: inline-flex;display: grid;display: inline-grid;display: ruby;display: ruby-base;display: ruby-text;display: ruby-base-container;display: ruby-text-container;/* CSS 3 *//* Experimental values */display: contents;display: run-in;/* Experimental values *//* Global values */display: inherit;display: initial;display: unset;}下⾯就display的重要属性进⾏讲解,并配合⼀些相关的例⼦none是 CSS 1 就提出来的属性,将元素设置为none的时候既不会占据空间,也⽆法显⽰,相当于该元素不存在。
CSS3中的display:grid⽹格布局介绍前⾔:grid⽹格布局,就是将⽹页划分成⼀个个⽹格,可以任意组合不同的⽹格,做出各种各样的布局html<div class="content"><div class="grid">1</div><div class="grid">2</div><div class="grid">3</div><div class="grid">4</div><div class="grid">5</div><div class="grid">6</div><div class="grid">7</div><div class="grid">8</div><div class="grid">9</div></div>F12检查,选中div,就会看到,⼀个个虚线,这就是⽹格容器属性:display:grid; //默认是块元素display:inline-grid //默认是⾏内块元素注意:设置为grid后,⼦元素的float, display:inline-block,display:table-cell 等设置都⽆效了属性解释:1.⾏宽列宽grid-template-columns: 定义列数,每⼀列的列宽;(⼀排有⼏个div,每个div宽度是多少)grid-template-columns: 100px 100px 100px; //代表有三列,每列是100px的宽度,也可以⽤百分⽐grid-template-rows: 每⼀⾏的⾏⾼;(每⾏div的⾼度是多少)grid-template-rows:100px 100px 100px; //从上⾄下,每⾏⾼度为100px,如果有第四⾏,未设置就是其⾃⾝⾼度即:每⼀⾏的⾼度是⼀样,每⼀列的宽度是⼀样的,就像格⼦⼀样,就是⽹格布局重复写值,可以⽤repeat函数grid-template-columns: 100px 100px 100px; -》grid-template-columns:repeat(3,100px); //重复三次,每次100px;也可以是不固定的重复模式:grid-template-columns:repeat(2,100px 80px); //重复两次100px 80px 的模式,就是4列=== grid-template-columns:100px 80px 100px 80px;2.关键词1) auto-fill:如果容器⼤⼩不固定,⽹格⼤⼩固定,可以⽤关键词⾃动填充grid-template-columns:repeat(auto-fill,100px);//⾃动填充,每列100px宽度2)fr(fraction):倍数,如果有两列,1fr 2fr,后者就是前者的两倍grid-template-columns:1fr 2fr;grid-template-rows:50px 1fr 2fr;如图:第⼆列是第⼀列的2倍,填充整个容器的宽度对于⾏⾼,1fr就是⾃⾝内容的⾼度,第⼀⾏是50px 第⼆⾏是18px 第三⾏2倍36px,因为没有设置第四第五⾏,所以后⾯两⾏都是⾃⾝⾼度18px。
详解CSS中的display属性前⾔ display在⽹页的设计中经常⽤到,对页⾯的布局和尺⼨等内容有着很⼤影响,常⽤的主要有none、block、inline(默认值)、inline-block 等⼏个属性,本⽂详细介绍关于display的各种属性。
1.定义 display属性⽤于规定元素⽣成的框类型,影响显⽰⽅式 值:none | inline | block | inline-block | list-item | run-in | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-colume-group | table-colume | table-cell | table-caption | inherit 初始值:inline 继承性:⽆ 【注意】IE7-浏览器不⽀持table类属性值和inherit2.分类【1】block 【特征】 【1】不设置宽度时,宽度为⽗元素宽度 【2】独占⼀⾏ 【3】⽀持宽⾼ 【标签】<address><article><aside><blockquote><body><dd><details><div><dl><dt><fieldset><figcaption><figure><footer><form><h1><header><hgroup><hr><html><legend><menuitem><nav><ol><optgroup><option><p><section><summary><ul> 【不⽀持的样式】 【1】vertical-align【2】inline 【特征】 【1】内容撑开宽度 【2】并⾮独占⼀⾏ 【3】不⽀持宽⾼ 【4】代码换⾏被解析成空格 【标签】<a><abbr><area><b><bdi><bdo><br><cite><code><del><dfn><em><i><ins><kbd><label><map><mark><output><pre><q><rp><rt><ruby><s><smap><small><span><strong><sub><sup><time><u><var><wbr> 【不⽀持的样式】 【1】background-position 【2】clear 【3】clip 【4】height | max-height | min-height 【5】width | max-width | min-width 【6】overflow 【7】text-align 【8】text-indent 【9】text-overflow3.inline-block 【特征】 【1】不设置宽度时,内容撑开宽度 【2】⾮独占⼀⾏ 【3】⽀持宽⾼ 【4】代码换⾏解析成空格 【标签】<audio><button><canvas><embed><iframe><img><input><keygen><meter><object><progress><select><textarea><video> 【不⽀持的样式】 【1】clear 【IE兼容】 IE7-浏览器不⽀持给块级元素设置inline-block样式,解决⽅法如下:⾸先将其变成⾏内元素,使⽤具有⾏内元素的特性,然后触发haslayout,使其具有块级元素的特性,如此就可以模拟出inline-block的效果4.none 【特征】 隐藏元素并脱离⽂档流 【标签】<base><link><meta><title><datalist><dialog><param><script><source><style>5.list-item 【特征】 【1】不设置宽度时,宽度撑满⼀⾏ 【2】独占⼀⾏ 【3】⽀持宽⾼6.run-in 【特征】 run-in是⼀个有意思的块/⾏内元素混合,可以使某些块级元素成为下⼀个元素的⾏内部分。
display:table的⼏个⽤法DIV+CSS的布局已经让表格布局⼏乎很少⽤到,除⾮表格语义性很强的情况。
display:table解决了⼀部分需要使⽤表格特性但⼜不需要表格语义的情况,尤其是DIV+CSS很不⽅便解决的问题,⽐如以下两种情况:⼀、⽗元素宽度固定,想让若⼲个⼦元素平分宽度通常的做法是⼿动设置⼦元素的宽度,如果设置百分数不⼀定能整除,设置具体的数值⼜限制了⽗元素的宽度固定,很烦。
可以使⽤display:table来解决:.parent{display: table; width: 1000px;}.son{display: table-cell;}如此⼀来,就算是三个或者六个元素也可以很⽅便均分⽗元素的宽度了。
⼆、块级⼦元素垂直居中想让⼀个div或p在⽗元素中垂直居中⼀直是很多⼈解决不了的问题(注意直接对块级元素使⽤vertical-align是不能解决这个问题的,vertical-align定义⾏内元素的基线相对于该元素所在⾏的基线的垂直对齐),同样可以使⽤display:table⽅便解决:.parent {display: table;}.son {display: table-cell; vertical-align: middle;}将块级⼦元素的display设置为table-cell之后再使⽤vertical-align就可以了。
注意:虽然display:table解决了避免使⽤表格的问题,但有⼏个需要注意的:(1)display: table时padding会失效(2)display: table-row时margin、padding同时失效(3)display: table-cell时margin会失效。
DisplayTag详解【简介Introduction】DisplayTag是一个开源的自定义标签库(Custom Tag lib),他提供了直接而有效的格式化web视图层数据的有效手段。
你可以在现在流行的web应用的MVC模式中集成DisplayTag到View层,其提供的强大表格格式化功能一定会令你爱不释手。
或许上面说的有些夸张了,但是DisplayTag在表格的格式化方面表现确实出色,当然,他也只能显示表格,视图层的大部分工作不就是使用表格来格式化数据嘛?!好了,让我们通过图片来看看他是一个什么样子吧!^_^怎么样?是不是感觉不错那?如果答案是肯定的,那么你一定急着想自己试一试咯?!不要急,下面就让我们开始我们的DisplayTag之旅。
[b]【Hello DisplayTag】[/b]既然是一个tutorial,所以,我们不想对像自定义标签的实现原理等进行解释,也就是说在此之前,我们假定你已经对自定义标签有一定的认识,当然,没有也无所谓,等这篇tutorial 完成后,你估计就会了解的差不多了。
呐,让我们从最简单的displaytag的使用开始,就跟你的第一个程序往往是从HelloWorld程序开始一样。
先忽略其他的配置问题,我们的JSP文件的源代码如下:实际上,除去初始化和数据准备等操作,生成表格的代码只有一行,那就是:而他生成的表格就是这样的:怎么样?是不是很简单那?简单的代码就可以生成如此漂亮的表格,你有理由不用嘛?(因为使用了Struts的LabelValueBean,所以表格上显示了原始的title,不用着急,后面我们将会说道如何修改成你所期待的样子)[b]【配置configuration】[/b]Ok,在我们运用DisplayTag之前,我们需要对他的使用环境进行一些配置,或许有些复杂,但是,如果你是一个WebApp老手的话,其实并不难。
当然,在此之前,我们需要下载DisplayTag,当前的最新版本是displaytag-1.0-b3。
你可以去SourceForge下载它,下载网址是:/download.html 。
2.1 DisplayTag的类库,依赖库和TLD文件的添加解压下载下来的displaytag的压缩包,之后依次拷贝displaytag-1.0-b3.jar和lib目录下面的所有jar文件到你自己的WEBAPP_HOME/WEB-INF/lib目录下面,拷贝displaytag-11.tld,displaytag-12.tld和displaytag-el-12.tld 到WEBAPP_HOME/WEB-INF目录下面。
他的依赖库包括:commons-beanutils,commons-collections,commons-lang以及commons-logging。
这里需要注意的问题就是,如果你连同Struts一起使用的话,DisplayTag的依赖库实际上都包括在Struts1.1的发布包中,你只需要将displaytag-1.0-b3.jar文件拷贝到你自己的WEBAPP_HOME/WEB-INF/lib目录下面就可以了。
另外一个重要的问题就是,如果你的Struts1.1发布包中的commons lang包不是2.0版本或者更高版本的话,需要去Apache的Jakarta commons项目主页上下载2.0版本的commons-lang类库,并替换掉原来的commons-lang类库,否则,运行的时候将报错误并不能运行。
2.2 web.xml的配置要使用DisplayTag提供的自定义标签,跟其他自定义标签的使用没有什么两样,同样,需要在web.xml文件中注册taglib,下面是笔者的web.xml文件中taglib注册的片断:/WEB-INF/displaytag-11.tld/WEB-INF/displaytag-12.tld/el/WEB-INF/displaytag-el-12.tld在这里有必要说明一下这三个tld之间的区别,这其实在DisplayTag的官方网站上有提到,这里只是重复一下:displaytag-11.tld 只是提供对JSP1.1规范的的支持,而displaytag-12.tld则提供了对JSP1.2规范的支持,最后的displaytag-el-12.tld除了提供跟displaytag-12.tld提供的特性之外,他提供对Expression Lanuage的支持。
所以,为了在web应用移植于不同的app server的时候可以更少的修改文件,这里将所有的tld都添加在这里以便使用。
配置完成taglib后,下面是可选择的配置项,如果你不需要的话,可以不进行配置,但建议还是配置他们为好。
第一幅图中可以看到diaplaytag提供了数据的导出功能,如果说你的Table存在的页面被include在另一个页面中,比如如果你使用Struts的话,那么Tiles的使用就是这种情况,那么你需要为web.xml中添加filter,以便数据到处功能能够工作正常。
首先,在web.xml中添加以下filter配置项(按照web.xml 文件中各个elements的顺序规定,需要将元素添加在前面,以下类似的情况请参考web.xml规范):ResponseOverrideFilterorg.displaytag.filter.ResponseOverrideFilter其次,添加filter 的映射:ResponseOverrideFilter*.doResponseOverrideFilter*.jsp这样,对于web.xml的配置基本就完成了。
对于I18N 在web.xml文件中进行配置的手段,将在后面提到,不归入此类。
2.3属性文件的配置(displaytag.properties)DisplayTag提供了一个属性文件(displaytag.properties)来定义表格显示的时候提供的信息,比如分页显示或者导出数据等的提示信息等,但是因为这个属性文件默认的文件随jar文件一起发布而且是英文的,所以,我们需要对其进行定制以满足中文或者其他平台下的使用。
要对这个属性文件进行定制,有三种途径:【1】使用标签,这个标签可以对单个的属性进行设置,也就是说如果要对整个的应用页面都进行定制的话,需要每个页面都使用这个标签并对每一个要定制的属性都使用它,这很明显不是太行得通,所以,displaytag还提供了下面得途径;【2】使用DisplayPropertiesLoaderServlet来初始化环境,这种方式方式可以对整个应用的属性进行定制,但是,笔者使用这种方式的时候报错,不过,还是将其在web.xml文件中的配置项列于此:DisplayPropertiesLoaderServlet DisplayPropertiesLoaderServletdisplaytag initialization servletorg.displaytag.properties.DisplayPropertiesLoaderServletp roperties.filename/WEB-INF/displaytag.properties1这种方法也是读取diaplaytag.properties中的属性配置对整个应该环境进行定制。
最后,也就是就第三中方式,也是笔者最常用的方式,那就是:【3】新建一个diaplaytag.properties属性文件,向该文件中添加需要覆盖的或者需要另外定制的属性(具体有那些属性,DisplayTag网站提供了一个PDF格式的manual,上面有所有可以使用的属性的列表,因为太长,所以这里不作罗列)。
这个文件的一个样本笔者将在后面的实例部分进行罗列。
在准备好属性文件后,将其放到WEBAPP_HOME/WEB-INF/classes目录下面就可以了。
我想这也比其他方式方便的多,另外,这种方式也是针对整个的WEB应用进行定制。
以上就是配置文件的三种配置方式,第一种只能对单个属性单个页面进行,而后面两种方式可以针对整个的web应用,尤其是第三种方式,笔者尤其倡导。
2.4 CSS和img的移植如果说你试着将页面中的这一句去掉的话:/css/screen.css" type="text/css" media="screen, print" />,或许你会看到不想看到的景象,或者说你看到的表格将与你所期待的大相径庭:怎么样?与上面的简单实例相比,是不是淡色不少?!所以,要使得Displaytag提供最好的显示效果,或者说要显示正常,我们不但要保证服务器端的配置,同样的也要保证视图层的配置,比如说CSS和Images。
故此,建议将下载的压缩包中的diaplaytag.war文件包中的css目录和img目录拷贝到你当前工作的WEBApp的根目录下面,这样,就可以避免以上的事情发生。
当然,这只是可以正常显示的必要条件,像上面那样,如果页面中不引入css 的话,同样会显示不正常。
至此,你的Displaytag的配置就算完成了。
怎么样?是不是有些繁琐那?!不过不用担心,与它所带给你的便捷和强大的功能相比,这算不了什么。
好了,下面就让我们对它的一些概念进行一下探索吧![b]DisplayTag Tutorial by DarrenWang[/b]CopyRight June,2004:em510:By DarrenWang,All Rights Reserved!接上回书说道,:em325:[b]【displaytag提供的自定义标签说明】[/b]DisplayTag一共提供了五种标签用来显示显示表格,他们是,,,和。
通过这几个标签的组合可以完成大部分表格的显示功能。
下面,笔者将就各个标签情况做一阐述,其中将会包括其功能以及使用中可能遇到的问题。
3-1 标签说明DisplayTag标签库的顶层标签,用来显示整体的表格,通过从不同的scope中抽取数据并进行显示,根据Collection形式的数据中的属性标志来罗列数据。
剩下的所有的diplaytag 标签都嵌套于此标签之内。
他所提供的主要功能包括:以CSV,XML和Excel形式导出数据;对于较长的数据,提供分页显示功能等等。
实例代码:该标签有一系列的属性(Attribute),因为太多,这里仅就几个主要而常用的进行说明:Name属性:必须指定,表示scope中的数据标志,通过name 来引用scope中的数据并进行显示。
可以指定pageScope,requestScope,sessionScope和applicationScope。