北极心空
struts2虽然继承了webwork优秀的MVC分离,可是有很多地方让人百思不得其解!最让人离谱的是,返回的结果集中居然没有String,xml这两种非常常用的类型。还是自己动手,丰衣足食:
第一种方式:使用“PlainText Result”
先看官方文档对plain text结果的定义:“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.”这是一个纯扯蛋的说法。。。貌似感觉只能返回jsp页面似的,最起码他误导了我。
其实使用“PlainText Result” ,返回的结果是未进行格式和编码定义的字符串。什么意思?就类似于“FreeMarker Result” ,返回一个*.ftl格式的模板,你完全可以在*.ftl写string,那么结果就是string;也可以在里面写xml,那么结果就是xml。
举例如下:
这里定义了xmlMessage为plain text结果,至于它具体是什么,看下面的Action类:
在代码中,我们显式的给response定义了ContentType。那么返回去的内容"<cc>cccccc</cc>"就会被接收方按xml进行解析。
而如果需要返回的是String类型,那么contentType = "text/plain”。
如果进一步需要指明编码,那么contentType = "text/plain; charset=UTF-8";
到这里理解“plain text的结果是未进行格式和编码定义的字符串”应该就不困难了。基于http的内容传输实际都是字符串型,类型的定义是放在response的contentType 中。
第二种方式: 直接扩展struts2的结果集StrutsResultSupport :
代码如下:
应该很容易懂了。。嘿嘿
使用的方法:
1.Action
2.定义struts.xml
无非也就是将string结果集进行申明,然后给返回“ajaxResponse”的结果绑定变量名。这里定义返回Action的String result变量,即“abc”。
第三种方式:利用Velocity Result、FreeMarker Result
类似第一种方式,这里不再重复
Copyright @ 芦苇 Powered by: .Text and ASP.NET Theme by: .NET Monster