今天难道的早起(因为早上要开会),或许很久没有那么早起床了,今天起床之后一点都不困,显得特兴奋,昨天自然心情很好,比赛忙完了,项目又接近尾声,似乎我一下子又空了起来,终于又可以继续写我的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" class="com.condey.system.StringResult"></result-type>
</result-types>
</package>
如果某个action需要使用这个返回类型,就可以这么写:
<action name="deleteSort" class="manageSortAction" 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";
} else
deResult = "false";
} catch (Exception e) {
deResult = "false";
return "deResult";
}
return "deResult";
}
忽然我又出现了一个疑问为什么SUCCESS这些就可以直接使用呢? 我粗略的查了查,看了struts-default.xml之后,发现result的默认类型为:
<result-types>
<result-type name="dispatcher" default="true"
class="org.apache.struts2.dispatcher.Servlet
DispatcherResult"/>
</result-types>
知道了DispatcherResult 去查了下源代码, 然后就一目了然了,他使用的直接String finalLocation传值方式,嘿嘿~深入研究框架的源代码还是挺重要的,继续研究中ing ......
分享到:
相关推荐
适合初学者学习,登陆 注册 功能 借书还书功能 一系列增删改查 内置数据库 和项目运行中的图片文件,一个简单的图书馆系统。
一个图书馆管理信息系统,仅供参考,版权归所有开发者。
基于android开发,可以读取xml文件获得图书信息并显示,可以添加修改个人信息,查找本地图书信息并显示
文件下载,多线程下载。断点下载等简单封装的aar包
MyLibrary
管理员登录图书管理软件系统可以进行读者管理、书籍管理、借阅情况查询分析。读者管理包括读者基本信息的添加、删除、修改以及根据读者编号和姓名查询读者信息,书籍管理包括书籍基本信息的添加、删除、修改以及根据...
包含了三个功能 1.使用注解告别繁琐的findViewById和setOnClickListener 2.三级缓存加载网络图片 3.一行代码解析json 内含使用例子,新手作品,高手勿喷
管理系统系列--MYLIBRARY图书管理系统 是基于Spring Boot + Mybatis 开发的图书管理系统
a tool for xbmc ,you can see lots of mov on it it can automaticly update
关于stm32f103c8t6的一些初始化代码
15.5 字符串、日期、时间、BLOB和NULL 15.6 向关联数据表插入新数据记录 15.7 处理来自HTML表单的输入数据 15.8 分页显示查询结果 15.9 处理层次化数据 15.10 速度优化 15.11 Unicode 15.12 ...
MYLIBRARY图书管理系统 是基于Spring Boot + Mybatis 开发的图书管理系统, 系统具有用户管理、角色管理、应用管理、图书分类管理、图书信息管理、借书管理、还书管理、图书检索、借还记录等功能。 后端 基础框架:...
robotframework实战三 实战三--⾃定义关键字 ⾃定义关键字 在rf的实战1中,我的登录获取验证码就使⽤了⾃定义关键字,具体怎么做的,如下 1.新建⽂件夹 新建⽂件夹 新建⼀个⽂件夹,我的MyLibrary,并且存放在site-...
java6 string源码 一、ListView android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WebView、ExpandableListView、GridView、ScrollView、Horizontal ...
关于Laravel Laravel是一个具有表达力,优雅语法的Web应用程序框架。 我们认为,发展必须是一种令人愉快的,富有创造力的经历,才能真正实现。 Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的...
The Definitive Guide to MySQL源码(即mylibrary.sql)
用法$ npm i -- save - dev nanon Usage $ nanon entrypoint.js output.bundle.js --name MyLibrary $ # Or $ nanon --input entrypoint.js --output output.bundle.js --name MyLibrary Options --input, -i Input ...
MyPlugins 我的插件