MyLibrary问题分析(三)-struts2控制器(action)返回字符串
?? 今天难道的早起(因为早上要开会),或许很久没有那么早起床了,今天起床之后一点都不困,显得特兴奋,昨天自然心情很好,比赛忙完了,项目又接近尾声,似乎我一下子又空了起来,终于又可以继续写我的MyLibrary了,但是马上要考可恶的六级了,似乎今年没有完成的希望了。
?? 今天下午小小的玩了下,继续我的java之旅,这次遇到了一个问题,需要Action返回一个字符串放到前台解析,网上一搜一大堆,我也不另外写个文章来说明怎么做,以前也遇到过这样的情况,但是似乎以前用的方法比较烂,这次想选一个一劳永逸的办法去解决,所以我采用了如下方法
?? 首先自己定义了一返回类型(字符串), 这个类代码如下:
public class StringResult extends ServletRedirectResult {private static final long serialVersionUID = 1L;private String contentTypeName;private String stringName = "";public StringResult() {super();}public String getContentTypeName() {return contentTypeName;}public void setContentTypeName(String contentTypeName) {this.contentTypeName = contentTypeName;}public String getStringName() {return stringName;}public void setStringName(String stringName) {this.stringName = stringName;}public StringResult(String location) {super(location);}protected void doExecute(String finalLocation, ActionInvocation invocation)throws Exception {HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext().get(HTTP_RESPONSE);String contentType = conditionalParse(contentTypeName, invocation);if (contentType == null) {contentType = "text/plain; charset=UTF-8";}response.setContentType(contentType);PrintWriter out = response.getWriter();String result = (String) invocation.getStack().findValue(stringName);out.println(result);out.flush();out.close();}}? ?新建完这个类后,我们就可以在struts2配置文件中使用这个返回类型:
??
<package name="default" namespace="" extends="struts-default"> <result-types> <result-type name="string" name="code"> <action name="deleteSort" method="deleteSortAction"> <result name="deResult" type="string"> <param name="stringName">deResult</param> </result></action>
????这里简单说一下 name="deResult"这个result? 就是在?deleteSortAction这个方法中? return "deResult"的这个result,然后 <param name="stringName"> 就是StringResult的字段, 接下去的deResult就是当返回这个result的时候,action中deResult值给予StringResult的stringName这个字段
??? 下面是deleteSortAction这个method:
????
public String deleteSortAction() {if (sortId < 0)deResult = "false";try {Boolean result = manageSort.deleteSort(sortId);if (result == true) {deResult = "success";} elsedeResult = "false";} catch (Exception e) {deResult = "false";return "deResult";}return "deResult";}??? 忽然我又出现了一个疑问为什么SUCCESS这些就可以直接使用呢? 我粗略的查了查,看了struts-default.xml之后,发现result的默认类型为:
???
<result-types> <result-type name="dispatcher" default="true" />![]()
![]()
![]()
![]()
![]()