J2EE中使用Display标记库来展示表格(翻译)
J2EE中使用Display标记库来展示表格(翻译) 这篇文章选自Bill Siggelkow的<<Jakarta Struts Cookbook>>一书.
我觉得这篇文章蛮实用,所以大致翻译了一篇文章.未经作者同意,实在不好意思,所有版权归原作者:P
用网页展示表格时,如果行数太多,有时候需要把它们分成很多页.而且各行之间使用不同的背景色来方便用户阅读.或者可能还需要排序.
虽然实现上面的功能都不难,但是如果使用Display标记库将能够大大简化开发.它模仿google,baidu页面的风格,把许多行的表格分成各个页面,并提供了常用的功能.
数据模型是很简单的美国总统JavaBean.它有3个简单的String属性.
Java代码如下:
PagedData.java
import java.util.ArrayList;
import java.util.List;
public class PagedData {
private List list;
public PagedData( ) {
list = new ArrayList( );
list.add( new President( 'Garfield', 'James', '1881') );
list.add( new President( 'Arthur', 'Chester', '1881-85') );
list.add( new President( 'Cleveland', 'Grover', '1885-89') );
list.add( new President( 'Harrison', 'Benjamin', '1889-93') );
list.add( new President( 'Cleveland', 'Grover', '1893-97') );
list.add( new President( 'McKinley', 'William', '1897-1901') );
list.add( new President( 'Roosevelt', 'Theodore', '1901-09') );
list.add( new President( 'Taft', 'William H.', '1909-13') );
list.add( new President( 'Wilson', 'Woodrow', '1913-21') );
list.add( new President( 'Jackson', 'Andrew', '1829-37') );
list.add( new President( 'Harding', 'Warren', '1921-23') );
list.add( new President( 'Coolidge', 'Calvin', '1923-29') );
list.add( new President( 'Hoover', 'Herbert', '1929-33') );
list.add( new President( 'Roosevelt', 'Franklin D.', '1933-45') );
list.add( new President( 'Truman', 'Harry', '1945-53') );
list.add( new President( 'Eisenhower', 'Dwight', '1953-61') );
list.add( new President( 'Kennedy', 'John F.', '1961-63') );
list.add( new President( 'Johnson', 'Lyndon', '1963-69') );
list.add( new President( 'Nixon', 'Richard', '1969-74') );
list.add( new President( 'Ford', 'Gerald', '1974-77') );
list.add( new President( 'Carter', 'Jimmy', '1977-81') );
list.add( new President( 'Reagan', 'Ronald', '1981-89') );
list.add( new President( 'Bush', 'George H.W.', '1989-93') );
list.add( new President( 'Clinton', 'William J.', '1993-2001') );
list.add( new President( 'Bush', 'George W.', '2001-present') );
list.add( new President( 'Washington', 'George', '1789-97') );
list.add( new President( 'Adams', 'John', '1797-1801') );
list.add( new President( 'Jefferson', 'Thomas', '1801-09') );
list.add( new President( 'Madison', 'James', '1809-17') );
list.add( new President( 'Monroe', 'James', '1817-25') );
list.add( new President( 'Jackson', 'Andrew', '1829-37') );
list.add( new President( 'Van Buren', 'Martin', '1837-41') );
list.add( new President( 'Harrison', 'William Henry', '1841') );
list.add( new President( 'Tyler', 'John', '1841-45') );
list.add( new President( 'Polk', 'James', '1845-49') );
list.add( new President( 'Taylor', 'Zachary', '1849-50') );
list.add( new President( 'Fillmore', 'Millard', '1850-53') );
list.add( new President( 'Pierce', 'Franklin', '1853-57') );
list.add( new President( 'Buchanan', 'James', '1857') );
list.add( new President( 'Lincoln', 'Abraham', '1861-65') );
list.add( new President( 'Johnson', 'Andrew', '1865-69') );
list.add( new President( 'Grant', 'Ulysses S.', '1869-77') );
list.add( new President( 'Hayes', 'Rutherford B.', '1877-81') );
}
public List getData( ) {
return list;
}
}
President.java
public class President {
public President(String lname, String fname, String term) {
lastName = lname;
firstName = fname;
this.term = term;
}
public String getFirstName( ) {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName( ) {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getTerm( ) {
return term;
}
public void setTerm(String term) {
this.term = term;
}
private String lastName;
private String firstName;
private String term;
}
下面的Jsp页面是展示表格的,也体现了Display库最常见的用法:
index.jsp
<%@ page contentType='text/html;charset=UTF-8' language='java' %>
<%@ taglib uri='http://displaytag.sf.net/el' prefix='display' %>
<html>
<head>
<title>Struts Cookbook - Chapter 4 : Display Tag Example</title>
<style>
.even {background-color:orange;}
.odd {background-color:yellow;}
</style>
</head>
<body>
<h2>Display Tag Examples</h2>
<jsp:useBean id='pagedData' style="font-family: courier new;" / PagedData'/>
<display:table id='pres' name='${pagedData.data}'
sort='list' pagesize='10' defaultsort='3'>
<display:caption>United States Presidents</display:caption>
<display:setProperty name='basic.show.header' value='true'/>
<display:column property='firstName' title='First Name'
sortable='true'/>
<display:column property='lastName' title='Last Name'
sortable='true'/>
<display:column property='term' title='Term of Office'
sortable='true'/>
</display:table>
</body>
</html>
在浏览器里打开页面:

看见了吧,效果确实不错:)
要使用display标记库,需要在这里下载:
http://displaytag.sourceforge.net
把display.jar文件放到WEB-INF/lib中.
注意:
这里用到了EL,所以 Display.jar依赖2.0或以上的Jakarta Commons Lang库,commons-lang-2.0.jar和Jakarta Commons Collections库,commons-collections.jar.
它们分别在:
http://jakarta.apache.org/commons和http://jakarta.apache.org/commons/collections/
下载,然后把对应的jar文件copy到WEB-INF/lib中.
简单介绍用法,其实也不用我多说,看看jsp文件也就基本懂了.
<display:table id='pres' name='${pagedData.data}'
sort='list' pagesize='10' defaultsort='3'>
id是以后用到时的变量.name是要展现的集合数据.list表示整个list被排序.pagesize表示每页所要展示的数.defaultsort表示最开始是按第几列排序的,注意这里是以1开始计数的.
<display:caption>United States Presidents</display:caption>
isplay:caption标记中间的字符串是用来放到表格上面的标题.
<display:column property='firstName' title='First Name'
sortable='true'/>
display:column标记指定了每列的属性.
还要更多的使用方法,见Display标记库的Doc文档.