歡迎來到小米的博客
希望能和您交流Java編程的知識和見解
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-57 評論-202 文章-17 trackbacks-0
用URLEncoder輸出<bean:write />的值
我在JSP頁面中,當處理<a href></a>時,經常不用<html:link/>的方式處理,而是用下面這樣的方式處理:
<a href="foo.do?param1=<bean:write name="n1" property="p1"/>¶m2=<bean:write name="n2" property="p2"/>">Test</a>
這樣在處理多個參數時,就不需要先放到一個Collection中。按照<html:link/>的多個參數的處理方法去做,有時確實是很繁瑣。不過這樣帶來一個新的問題,在處理中文參數值時,這樣就行不通了。用request.getParameter("param1")獲取的中文,在中文的個數為奇數個時,就會顯示不正確。例如“三個字”在getParameter中獲取的值是“三個?”。
這個問題是由于<bean:write />沒有用URLEncoder的encode方法處理值,因為<bean:write />主要是用來在頁面上顯示bean的信息,并不是用在鏈接中當作參數的值。這個問題可以通過給<bean:write />增加新的屬性來解決。
從Struts的網站上下載Struts 1.2.4的源代碼:
http://apache.freelamp.com/struts/source/jakarta-struts-1.2.4-src.zip
解壓到本地目錄,然后修改文件jakarta-struts-1.2.4-src\src\share\org\apache\struts\taglib\bean\WriteTag.java。新增一個屬性charset,表示需要用什么編碼進行編碼。代碼片斷如下:
/**/
/*
*
* Added by George Hill, the string value charset to encoding.
* 05/19/2005
*/
protected
String charset
=
null
;
public
String getCharset()
{
return
(
this
.charset);
}
public
void
setCharset(String charset)
{
this
.charset
=
charset;
}
修改方法formatValue,把這段
if
(value instanceof java.lang.String)
{
return
(String) value;
}
else
{
}
替換為:
if
(value instanceof java.lang.String)
{
if
(charset
!=
null
&&
charset.length()
!=
0
)
return
TagUtils.getInstance().encodeURL((String) value, charset);
else
return
(String) value;
}
else
{
}
保存修改后的文件。然后需要修改文件jakarta-struts-1.2.4-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:
<
tag
>
<
name
>
write
</
name
>
<
attribute
>
<
name
>
charset
</
name
>
<
required
>
false
</
required
>
<
rtexprvalue
>
true
</
rtexprvalue
>
<
info
>
<
p
>
Added by George Hill, use this charset to encoding the value.
</
p
>
</
info
>
</
attribute
>
</
tag
>
然后修改一下ant的編譯配置文件build.xml,有幾個部分需要修改:
1.屬性catalina.home需要修改成你安裝的tomcat的目錄;
2.compile.classpath需要修改,把jar文件的路徑指向正確;
3.prepare.library taget部分的copy,把相關的jar文件的路徑指向正確。
運行ant,編譯后的jar文件保存在jakarta-struts-1.2.4-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。如果不寫charset屬性,那么和原來的<bean:write />處理是一樣的。
這樣,類似于下面的鏈接地址:
<a href="foo.do?param1=<bean:write name="n1" property="p1"/>¶m2=<bean:write name="n2" property="p2"/>">Test</a>
就可以修改成:
<a href="foo.do?param1=<bean:write name="n1" property="p1" charset="UTF-8"/>¶m2=<bean:write name="n2" property="p2" charset="UTF-8"/>">Test</a>
在request.getParameter("param1")中將會獲得正確的中文值。
對于struts 1.1,程序又稍微有些不同。我將在下一篇隨筆中介紹。
posted on 2005-05-20 00:50
小米
閱讀(2089)
評論(5)
編輯
收藏
所屬分類:
Struts
評論:
#
re: 用URLEncoder輸出<bean:write />的值 2005-05-20 11:18 |
Dennis
雖然老實說... struts tag 的設計真的很差...
其實要應用類似 jsp:forward 的 jsp:param
加上 html:linkParam 才對
但, 以你這個例子, 肯定是用 html:link 會比較好
1. foo.do 是一個 struts action, 而它的 path 和 .do 是可能轉換的
2.事實上, 可應用 EL 是可以完全替代 bean:write 的
寫一個 EL function 來作 escape 會比較簡單
也不必改動 struts 的 source code
或根本放在 bean 中的 properties 就已經是 escape 了的 string
3. 不滿意 struts 的 taglib, 可以轉用其他(e.g. jstl)
或 extends 它, 甚至自行寫一套也可以...
以 patch 的想法, 改動小許 source 的做法, 會引起相容性問題.
例如 copy bean.tld 為 mybean.tld
也 extends org.apache.struts.taglib.bean.WriteTag
回復
更多評論
#
re: 用URLEncoder輸出<bean:write />的值 2005-05-20 11:31 |
小米
確實,struts在View這一層做的相當不好,設計人員沒有很好的考慮實際開發人員是否方便使用。我一般也是迫不得以才考慮修改struts的源代碼,因為如果隨便修改源代碼的話,在團隊開發中會帶來很大的麻煩,自己還需要維護一套struts的代碼。
我也在考慮著在View這一層不使用struts的實現。多謝你的指教。
回復
更多評論
#
re: 用URLEncoder輸出<bean:write />的值[未登錄] 2008-06-03 11:40 |
aaa
aaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaa
回復
更多評論
#
re: 用URLEncoder輸出<bean:write />的值[未登錄] 2008-06-03 11:40 |
aaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
回復
更多評論
#
re: 用URLEncoder輸出<bean:write />的值[未登錄]
2008-06-03 11:44 |
aaa
臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍臥虎藏龍
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
用URLEncoder輸出<bean:write />的值(struts1.1版)
用URLEncoder輸出<bean:write />的值
Struts的國際化完整解決方案
如何在Struts中實現分頁顯示數據(2)
如何在Struts中實現分頁顯示數據(1)
小米,生活在深圳,專注于Java,主要從事數據庫和網頁編程。現在在學習著Hibernate和Spring。喜歡游戲、音樂和臺球。聯系方式:georgehill@21cn.com
<
2005年5月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(27)
給我留言
查看公開留言
查看私人留言
隨筆分類
Hibernate(15)
Java(17)
Spring(1)
Struts(5)
其它(5)
數據庫(2)
生活隨筆(12)
隨筆檔案
2006年4月 (1)
2006年3月 (1)
2005年8月 (1)
2005年7月 (11)
2005年6月 (13)
2005年5月 (30)
文章分類
Eclipse(1)
Java(8)
其它(8)
文章檔案
2005年7月 (1)
2005年6月 (13)
2005年5月 (3)
我的朋友們
emu的博客
Java BY
我的鏈接
Java Research
SUN Java技術中文社區
拯救程序員王俊
搜索
積分與排名
積分 - 233098
排名 - 247
最新評論
1.?re: Hibernate的一對一關聯實例
根據寫了報錯了是怎么回事
--33
2.?re: 用java.util.Timer定時執行任務
評論內容較長,點擊標題查看
--yunp
3.?re: Hibernate的一對一關聯實例
好樣的
--vds
4.?re: 如何在Struts中實現分頁顯示數據(1)
PageData中的集合是所有都取出,還是用多少取多少,若是前者,會拖慢系統的。
--李亞男
5.?re: BMP文件格式
評論內容較長,點擊標題查看
--見面
閱讀排行榜
1.?用java.util.Timer定時執行任務(33742)
2.?用JFreeChart畫柱狀圖的范例(10690)
3.?《深入淺出Hibernate》讀書筆記(3)——數據緩存(6107)
4.?《深入淺出Hibernate》讀書筆記(8)——Hibernate分頁(5554)
5.?用ChartDirector在JSP中畫統計圖(5246)
評論排行榜
1.?如何在Struts中實現分頁顯示數據(2)(25)
2.?獻出一份愛心 共同援助重病程序員王俊(22)
3.?Struts的國際化完整解決方案(11)
4.?2005年6月27日,一個值得紀念的日子(9)
5.?《深入淺出Hibernate》讀書筆記(1)——實體對象生命周期(9)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小米
主站蜘蛛池模板:
久久永久免费人妻精品下载
|
午夜不卡AV免费
|
亚洲风情亚Aⅴ在线发布
|
校园亚洲春色另类小说合集
|
人体大胆做受免费视频
|
成全视频在线观看免费
|
91频在线观看免费大全
|
日韩高清免费在线观看
|
国产亚洲色视频在线
|
日韩精品一区二区亚洲AV观看
|
亚洲娇小性xxxx色
|
色屁屁在线观看视频免费
|
a级毛片高清免费视频就
|
亚洲啪啪免费视频
|
国产伦精品一区二区三区免费迷
|
亚洲日韩国产成网在线观看
|
久久亚洲精品成人av无码网站
|
亚洲第一区二区快射影院
|
国产精品免费视频观看拍拍
|
37pao成人国产永久免费视频
|
青青青国产免费一夜七次郎
|
久久青草精品38国产免费
|
欧亚精品一区三区免费
|
亚洲精品无码av天堂
|
亚洲高清日韩精品第一区
|
大桥未久亚洲无av码在线
|
国偷自产一区二区免费视频
|
久久久久国色AV免费观看性色
|
亚洲偷自拍拍综合网
|
噜噜噜亚洲色成人网站∨
|
边摸边吃奶边做爽免费视频网站
|
亚洲短视频在线观看
|
国产a不卡片精品免费观看
|
亚洲综合亚洲综合网成人
|
亚洲成a人片毛片在线
|
男女猛烈无遮掩视频免费软件
|
97在线视频免费
|
亚洲麻豆精品国偷自产在线91
|
亚洲大香人伊一本线
|
中文永久免费观看网站
|
午夜a级成人免费毛片
|