nighty
折騰的年華
posts - 37, comments - 143, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2010年11月
>
日
一
二
三
四
五
六
31
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
1
2
3
4
5
6
7
8
9
10
11
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
Eclipse(7)
Flex(2)
Java(6)
Struts2(2)
SWT/JFace(1)
信息安全(1)
心得(5)
操作系統(3)
數據庫(3)
服務器部署(5)
測試(2)
系統集成(2)
軟件架構(2)
隨筆檔案
2013年4月 (2)
2013年3月 (1)
2012年4月 (1)
2011年10月 (1)
2011年8月 (1)
2011年5月 (3)
2011年4月 (1)
2011年3月 (2)
2011年2月 (1)
2011年1月 (1)
2010年11月 (1)
2009年11月 (1)
2009年10月 (1)
2009年8月 (1)
2009年7月 (1)
2008年8月 (2)
2008年7月 (2)
2008年6月 (2)
2008年5月 (4)
2008年4月 (1)
2008年1月 (1)
2007年11月 (1)
2007年10月 (2)
2007年8月 (2)
文章分類
測試
搜索
最新評論
1.?re: 關于commons dbutils組件的一個小缺陷分析
dbutils中連傳入到的參數都不區分大小寫??
--starhe
2.?re: B/S,C/S架構混合使用[未登錄]
評論內容較長,點擊標題查看
--eagle
3.?re: B/S,C/S架構混合使用[未登錄]
補充一下:用的語言是java,開發環境是eclipse
--eagle
4.?re: B/S,C/S架構混合使用
評論內容較長,點擊標題查看
--Unbotrusive
5.?re: struts2中重定向中文參數亂碼梳理[未登錄]
有用啊
--tony
閱讀排行榜
1.?ubuntu安裝Java開發環境(38193)
2.?Eclipse3.3安裝中文語言包(13945)
3.?B/S,C/S架構混合使用(13767)
4.?Http狀態碼思維導圖(13767)
5.?添加完整的Eclipse RCP幫助系統(8940)
評論排行榜
1.?B/S,C/S架構混合使用(25)
2.?無奈只能放棄iBatis(24)
3.?Eclipse3.3安裝中文語言包(13)
4.?httpclient3.1使用小結(8)
5.?JDBC連接DB2的一些總結(8)
Struts2+FreeMarker中利用plainText處理Ajax的一個技巧
Posted on 2010-11-10 15:43
寒武紀
閱讀(3093)
評論(3)
編輯
收藏
所屬分類:
Struts2
項目中使用了FreeMarker做為視圖技術,相對來說因為freemarker在視圖上有一些邏輯處理功能,某些地方就顯得比較方便,特別是macro的使用,當然也不是說JSP就沒有這個功能,只是以前用JSP寫起來沒有這么順手。
那么遵從前臺開發的一些基本原則,FTL(指freemarker模板文件)、CSS、JS都可以分得比較清晰。按照以前的技巧,在做Ajax請求的時候,都是前臺用JS框架(例如jquery)發送請求,Server端處理后用JSON結果返回。用struts2,到現在已經是2.2.1版本了,都覺得很方便!一般都是加上struts-json的Plugin來響應JSON的結果。
老是覺得麻煩的地方在于:JSON是純數據的組織形式,在Server處理完后,要響應頁面,得先組織成json,到了頁面,響應得到了json,又得取出來,動態添加到DOM中的某個地方;數據添加的同時,還有可能得使用js對樣式進行一些效果渲染。總體來說,這就使得前臺的js有點羅嗦,比如常見的就要append(html),這些html是用js字符串生成的,看著感覺很不舒服。
發現struts2有一個特殊的類型叫:plainText,可以把type類型定義為它,這樣頁面響應獲取得到的就是源代碼樣式的內容。這個功能大概就是為了給那些需要返回源代碼的頁面使用的。那么換個思路就是說,這返回的type就可以針對上面提出問題中,解決了已經組織好數據和樣式的內容。返回的內容不僅包含了數據,也包含了樣式,和你直接返回一個HTML是一樣,不過一般我們都需要動態生成html。把結果直接嵌入在HTML中,就可以顯示出來,不再需要用js進行組織。利用這個特點,做了個測試。發現行得通!
1. 首先,配置struts.xml文件,添加如下代碼:
<
package
name
="pt"
extends
="struts-default"
>
<
action
name
="test"
class
="test.TestAction"
>
<
result
type
="plainText"
>
<
param
name
="location"
>
/test.ftl
</
param
>
<
param
name
="charSet"
>
GBK
</
param
>
</
result
>
</
action
>
</
package
>
注意到了2.2.1版本,原來的plaintext寫法不知道從哪個版本開始已經不支持了,要有大寫T開頭,
plainText
,一個小細節,免得啟動時老是報錯。
2. Action的代碼
public
class
TestAction
extends
ActionSupport
{
private
String msg;
public
String getMsg()
{
return
msg;
}
public
void
setMsg(String msg)
{
this
.msg
=
msg;
}
@Override
public
String execute()
throws
Exception
{
setMsg(
"
我是Test
"
);
Configuration cfg
=
new
Configuration();
cfg.setServletContextForTemplateLoading(ServletContextUtil.getContext(),
"
/template
"
);
Template t
=
cfg.getTemplate(
"
test.ftl
"
);
ServletContextUtil.getResponse().setContentType(
"
text/html;charaset=
"
+
t.getEncoding());
Writer out
=
ServletContextUtil.getResponse().getWriter();
Map root
=
new
HashMap();
root.put(
"
msg
"
, getMsg());
t.process(root, out);
return
null
;
}
}
這是臨時隨便寫的,變量大概在正式項目中不會這樣定義,這只是一個測試而已。這里要注意,不要返回SUCCES,因為那樣返回的是源文件,沒有填充入數據的ftl文件,到了前臺也沒用。所以這里有點小麻煩,必須用Freemarker的API,把固定的模板,用數據填充后,用out寫出,最后return null即可!
3. 下面是ftl文件
<
div
style
="color:red;"
>
This is a plainText: ${msg}
</
div
>
這樣前臺接收到的,就是這個經過填充和渲染后的ftl頁面,和正常的html一樣。你可以把這個頁面做得足夠復雜。在需要嵌入的頁面上,用jquery之類的調用后放入DOM中即可以。
比如下面這樣的,把獲取得到的內容,填充入id為myDiv的DOM節點中。
$(
"
#myDiv
"
).load(
"
test.action
"
);
話說回來,也不是所有地方都建議這樣,有些地方,比如ajax填充一個下拉列表,或是僅僅列出一些簡單的數據,就不建議這么大費周章。直接用JSON處理更來得簡單。這個技巧適用的場景是那些沒有iframe架構的頁面,又需要ajax響應局部的具有一些組織形式的內容。如果你頁面都是include方式來進行劃分,又想可以Aajx引入一個比較復雜的頁面,也許這種思路可以省掉很多麻煩。具體的應用還需要進一步的實踐!
剛進場的時候戲就落幕
Feedback
#
re: Struts2+FreeMarker中利用plainText處理Ajax的一個技巧
回復
更多評論
2010-11-10 23:55 by
wenlin
struts2 中可以用 return Action.NONE 來代替 return null
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
struts2中重定向中文參數亂碼梳理
Struts2+FreeMarker中利用plainText處理Ajax的一個技巧
Powered by:
BlogJava
Copyright © 寒武紀
主站蜘蛛池模板:
国产曰批免费视频播放免费s
|
久久国产乱子伦精品免费强
|
亚洲精品免费网站
|
亚洲AV日韩AV天堂一区二区三区
|
a级毛片免费在线观看
|
亚洲成a人片在线观看无码
|
免费无码又爽又刺激一高潮
|
国产亚洲精品一品区99热
|
国产精品免费AV片在线观看
|
亚洲精品天天影视综合网
|
黄+色+性+人免费
|
一本色道久久88亚洲精品综合
|
性xxxx视频免费播放直播
|
亚洲第一福利视频
|
18禁网站免费无遮挡无码中文
|
亚洲一欧洲中文字幕在线
|
日韩在线免费播放
|
无遮挡国产高潮视频免费观看
|
久久精品亚洲男人的天堂
|
爱丫爱丫影院在线观看免费
|
亚洲日产2021三区
|
日韩在线免费播放
|
黄桃AV无码免费一区二区三区
|
成人无码区免费视频观看
|
亚洲欧美国产日韩av野草社区
|
伊人久久亚洲综合影院
|
青青操视频在线免费观看
|
亚洲综合伊人制服丝袜美腿
|
日韩在线视频免费看
|
中文字幕免费在线播放
|
亚洲小说区图片区
|
全黄性性激高免费视频
|
免费无遮挡无码永久视频
|
亚洲粉嫩美白在线
|
综合久久久久久中文字幕亚洲国产国产综合一区首
|
立即播放免费毛片一级
|
久久精品国产亚洲AV网站
|
成人毛片免费观看
|
99久久国产精品免费一区二区
|
久久亚洲国产成人影院
|
亚洲日韩乱码中文无码蜜桃臀网站
|