北極心空
struts2雖然繼承了webwork優(yōu)秀的MVC分離,可是有很多地方讓人百思不得其解!最讓人離譜的是,返回的結(jié)果集中居然沒有String,xml這兩種非常常用的類型。還是自己動(dòng)手,豐衣足食:
第一種方式:使用“PlainText Result”
先看官方文檔對plain text結(jié)果的定義:“A result that send the content out as plain text. Usefull typically when needed to display the raw content of a JSP or Html file for example.”這是一個(gè)純扯蛋的說法。。。貌似感覺只能返回jsp頁面似的,最起碼他誤導(dǎo)了我。
其實(shí)使用“PlainText Result” ,返回的結(jié)果是未進(jìn)行格式和編碼定義的字符串。什么意思?就類似于“FreeMarker Result” ,返回一個(gè)*.ftl格式的模板,你完全可以在*.ftl寫string,那么結(jié)果就是string;也可以在里面寫xml,那么結(jié)果就是xml。
舉例如下:
這里定義了xmlMessage為plain text結(jié)果,至于它具體是什么,看下面的Action類:
在代碼中,我們顯式的給response定義了ContentType。那么返回去的內(nèi)容"<cc>cccccc</cc>"就會(huì)被接收方按xml進(jìn)行解析。
而如果需要返回的是String類型,那么contentType = "text/plain”。
如果進(jìn)一步需要指明編碼,那么contentType = "text/plain; charset=UTF-8";
到這里理解“plain text的結(jié)果是未進(jìn)行格式和編碼定義的字符串”應(yīng)該就不困難了。基于http的內(nèi)容傳輸實(shí)際都是字符串型,類型的定義是放在response的contentType 中。
第二種方式: 直接擴(kuò)展struts2的結(jié)果集StrutsResultSupport :
代碼如下:
應(yīng)該很容易懂了。。嘿嘿
使用的方法:
1.Action
2.定義struts.xml
無非也就是將string結(jié)果集進(jìn)行申明,然后給返回“ajaxResponse”的結(jié)果綁定變量名。這里定義返回Action的String result變量,即“abc”。
第三種方式:利用Velocity Result、FreeMarker Result
類似第一種方式,這里不再重復(fù)
Copyright @ 蘆葦 Powered by: .Text and ASP.NET Theme by: .NET Monster