struts2自定义标签Word下载.docx
《struts2自定义标签Word下载.docx》由会员分享,可在线阅读,更多相关《struts2自定义标签Word下载.docx(41页珍藏版)》请在冰豆网上搜索。
UTF-8"
>
2.<
!
DOCTYPE
taglib
PUBLIC
"
-//Sun
Microsystems,
Inc.//DTD
JSP
Tag
Library
1.2//EN"
1.
taglib>
<
tlib-version>
2.2.3<
/tlib-version>
jsp-version>
1.2<
/jsp-version>
short-name>
tangs<
/short-name>
6.
uri>
/tangs<
/uri>
7.
display-name>
Tangs
Tags"
/display-name>
8.
9.
tag>
10.
name>
pages<
/name>
11.
tag-class>
com.tangs.tag.PageTag<
/tag-class>
//标签类
12.
body-content>
empty<
/body-content>
13.
attribute>
//标签中的属性
14.
cpage<
//属性名
15.
required>
true<
/required>
//是否必须
16.
rtexprvalue>
/rtexprvalue>
//表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定
17.
/attribute>
18.
19.
total<
20.
21.
22.
23.
24.
url<
25.
26.
27.
28.
/tag>
29.<
/taglib>
xmlversion="
encoding="
DOCTYPEtaglibPUBLIC"
-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN"
"
TangsTags"
//标签类
//标签中的属性
//属性名
//是否必须
//表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定
2.编写标签类
PageTag.java
1.package
com.tangs.tag;
3.import
com.opensymphony.xwork2.util.ValueStack;
4.import
javax.servlet.http.HttpServletRequest;
5.import
javax.servlet.http.HttpServletResponse;
6.import
ponents.Component;
7.import
org.apache.struts2.views.jsp.ComponentTagSupport;
9./**
*
分页标签
@author
tangs
*/
13.public
class
PageTag
extends
ComponentTagSupport
{
private
String
cpage;
//当前页
total;
//总页数
url;
//请求地址
public
void
setCpage(String
cpage)
this.cpage
=
}
setTotal(String
total)
this.total
setUrl(String
url)
this.url
29.
30.
@Override
31.
Component
getBean(ValueStack
arg0,
HttpServletRequest
arg1,
HttpServletResponse
arg2)
32.
return
new
Pages(arg0);
//返回Pages
Component,分页的逻辑处理都在这个Component中
33.
34.
35.
//获得参数
36.
protected
populateParams()
37.
super.populateParams();
38.
39.
Pages
pages
(Pages)component;
40.
pages.setCpage(cpage);
41.
pages.setTotal(total);
42.
pages.setUrl(url);
43.
44.}
packagecom.tangs.tag;
importcom.opensymphony.xwork2.util.ValueStack;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importponents.Component;
importorg.apache.struts2.views.jsp.ComponentTagSupport;
/**
*分页标签
*@authortangs
*/
publicclassPageTagextendsComponentTagSupport{
privateStringcpage;
//当前页
privateStringtotal;
//总页数
privateStringurl;
//请求地址
publicvoidsetCpage(Stringcpage){
this.cpage=cpage;
}
publicvoidsetTotal(Stringtotal){
this.total=total;
publicvoidsetUrl(Stringurl){
this.url=url;
@Override
publicComponentgetBean(ValueStackarg0,HttpServletRequestarg1,HttpServletResponsearg2){
returnnewPages(arg0);
//返回PagesComponent,分页的逻辑处理都在这个Component中
//获得参数
protectedvoidpopulateParams(){
Pagespages=(Pages)component;
Pages.java
java.io.IOException;
java.io.Writer;
java.util.logging.Level;
java.util.logging.Logger;
8.import
10./**
分页逻辑Bean
14.public
getCpage()
getTotal()
getUrl()
44.
Pages(ValueStack
arg0)
45.
super(arg0);
46.
47.
48.
49.
boolean
start(Writer
writer)
50.
result
super.start(writer);
51.
try
52.
StringBuilder
str
StringBuilder();
53.
isValid
true;
54.
55.
//从ValueStack中取出数值
56.
if
(isValid)
57.
(total.startsWith("
%{"
)
&
total.endsWith("
}"
))
58.
total
total.substring(2,
total.length()
-1);
59.
(String)this.getStack().findValue(total);
60.
==
null
false
:
61.
}
else
62.
false;
63.
64.
65.
66.
(cpage.startsWith("
cpage.endsWith("
67.
cpage
cpage.substring(2,
cpage.length()
-
1);
68.
(String)this.getStack().findValue(cpage);
69.
70.
71.
72.
73.
74.
75.
(url.startsWith("
url.endsWith("
76.
url
url.substring(2,
url.length()
77.
(String)this.getStack().findValue(url);
78.
79.
80.
81.
82.
83.
84.
85.
Integer
cpageInt
Integer.valueOf(cpage);
86.
//当前页与总页数相等
87.
(cpage.equals(total))
88.
//如果total
1,则无需分页,显示“[第1页]
[共1页]”
89.
("
1"
.equals(total))
90.
str.append("
[第
+
页]"
);
91.
[共
92.
93.
//到达最后一页,显示“[首页]
[上一页]
[末页]”
94.
a
href='
95.
str.append(url);
96.
cpage=1&
total="
+total+"
url="
+url);
97.
'
[首页]<
/a>
98.
99.
cpage="
(cpageInt
1)
total+"
100.
[上一页]<
101.
102.