大家好,又见面了,我是你们的朋友全栈君。
写一个JSP标签,一个Java文件,一个标签定义,避免重复写好多嵌入FusionChartsFree的代码。
第一步:定义标签属性等信息,编写TLD文件;
第二步:编写标签处理的代码;
第三步:测试标签;
第四步:打包发布。
关键:TLD文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<? xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
< taglib >
< tlib-version >1.0</ tlib-version >
< jsp-version >1.2</ jsp-version >
< short-name >jrtz</ short-name >
< uri >http://www.sunrise.com/jrtz</ uri >
< tag >
< name >fcf</ name >
< tag-class >com.sunrise.broncho.tag.FusionChart</ tag-class >
< body-content >JSP</ body-content >
< description > <![CDATA[FusionChartsFree 图表组件应用在JSP页面]]> </ description >
< attribute >
< name >chartSWF</ name >
< required >true</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[FusionChart的模版图例文件名]]> </ description >
</ attribute >
< attribute >
< name >divId</ name >
< required >true</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[图表所显示在的Div的Id]]> </ description >
</ attribute >
< attribute >
< name >chartId</ name >
< required >true</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[图表的名称Id]]> </ description >
</ attribute >
< attribute >
< name >dataXml</ name >
< required >false</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[数据源信息,XML数据源.如果使用XML数据源时,URL和XML同时存在优先使用XML数据源]]> </ description >
</ attribute >
< attribute >
< name >dataUrl</ name >
< required >true</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[数据源信息,URL数据源.如果使用XML数据源时该参数设为:""即可]]> </ description >
</ attribute >
< attribute >
< name >chartWidth</ name >
< required >false</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[图标显示的宽,默认值为300]]> </ description >
</ attribute >
< attribute >
< name >chartHeight</ name >
< required >false</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[图标显示的高,默认值为180]]> </ description >
</ attribute >
< attribute >
< name >deCode</ name >
< required >false</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[注意:仅在使用URL数据源下使用,对URL进行编码或解码,ture为解码,false为编码,默认值为false]]> </ description >
</ attribute >
< attribute >
< name >charName</ name >
< required >false</ required >
< rtexprvalue >true</ rtexprvalue >
< description > <![CDATA[注意:仅在使用URL数据源下使用,对URL进行编码解码的处理的字符名称,默认为:UTF-8]]> </ description >
</ attribute >
</ tag >
</ taglib >
|
FusionChartsFree的相关:http://aiilive.blog.51cto.com/1925756/1267021
关键:Java业务处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 使用FusionChartsFree图标组件的标签支持类
*
* @author ZhangXiao
* @time 2013-8-12
*/
public class FusionChart extends TagSupport {
/**
*
*/
private static final long serialVersionUID = -455570295257618661L;
private String chartSWF = "" ;
private String divId = "" ;
private String dataUrl = null ;
private String dataXml = null ;
private String chartId = divId + "chart" ;
private int chartWidth = 300 ;
private int chartHeight = 180 ;
private boolean deCode = false ;
private String charName = "UTF-8" ;
@Override
public int doStartTag() throws JspException {
try {
byte [] script = createScript().getBytes();
pageContext.getOut().write( new String(script, "UTF-8" ));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return super .doStartTag();
}
/**
* 通过标签参数创建JavaScript脚本信息
*
* @return 返回图表渲染脚本
*/
private String createScript() {
StringBuffer sb = new StringBuffer();
sb.append( "<script type='text/javascript'>" );
sb.append( "var fcf=new FusionCharts(" );
sb.append( "'" );
sb.append(chartSWF);
sb.append( "', " );
sb.append( "'" );
sb.append(chartId);
sb.append( "', " );
sb.append( "'" );
sb.append(chartWidth);
sb.append( "', " );
sb.append( "'" );
sb.append(chartHeight);
sb.append( "' ); " );
if (( this .dataUrl == null && this .dataXml == null )
|| ( this .dataUrl == "" && this .dataXml == "" )) {
sb = new StringBuffer();
sb.append( "无有效数据支持!" );
} else {
// 数据源的选取,XML和URL都存在时:优先选择XML
if ( this .dataXml != null ) {
sb.append( "fcf.setDataXML(\"" );
sb.append( this .dataXml);
sb.append( "\"); " );
} else {
sb.append( "fcf.setDataURL('" );
if (! this .deCode) {
sb.append( this .encode( this .dataUrl));
} else {
sb.append( this .decode( this .dataUrl));
}
sb.append( "'); " );
}
sb.append( "fcf.render('" );
sb.append( this .divId);
sb.append( "'); " );
sb.append( "</script>" );
}
return sb.toString();
}
/**
* 对URL进行解码
*
* @param url
* @return 返回解码字符串
*/
private String decode(String url) {
try {
return URLDecoder.decode(url, this .charName);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return url;
}
/**
* 对URL进行编码
*
* @param url
* @return 返回编码字符串
*/
private String encode(String url) {
try {
return URLEncoder.encode(url, this .charName);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return url;
}
}
|
关于测试参见附件例子FusionChartsFree JSP Tag web工程,例子文件要去掉.txt后缀。
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1285886,如需转载请自行联系原作者
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159274.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...