今天难道的早起(因为早上要开会),或许很久没有那么早起床了,今天起床之后一点都不困,显得特兴奋,昨天自然心情很好,比赛忙完了,项目又接近尾声,似乎我一下子又空了起来,终于又可以继续写我的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 ......
分享到:
相关推荐
《MyLibrary-master.zip》是一个专为初学者设计的图书馆管理系统,它涵盖了登录、注册、图书借阅与归还以及常见的数据操作等基本功能。这个项目使用了SSM(Spring、SpringMVC、MyBatis)框架,这是一个在Java开发中...
《图书综合管理系统-mylibrary》是一个专门针对图书馆管理而设计的信息系统。这个系统旨在提供全面、高效、便捷的图书管理服务,以满足图书馆日常运营的各种需求。以下是对该系统的详细解析: 一、系统概述 图书...
MyLibrary通过自定义注解和反射机制,可以自动将JSON字符串映射到Java对象中,大大减少了手动创建Gson或Jackson模型类的工作。例如,只需要定义一个包含对应字段的Java类,并在类上添加`@JsonModel`注解,然后调用`...
《我的图书馆(MyLibrary)——基于Android的XML图书管理应用详解》 在当今信息化时代,图书管理软件已经成为我们日常生活和工作中不可或缺的一部分。而“我的图书馆(MyLibrary)”是一款专为Android平台设计的应用,...
STM32F103C8T6是意法半导体(STMicroelectronics)生产的一款基于ARM Cortex-M3内核的微控制器,广泛应用于各种...开发者可以通过阅读和分析代码,掌握如何进行微控制器的初始化工作,进一步提升嵌入式系统的开发能力。
XBMC.MyLibrary-1.3.1.zip 是一个专为XBMC(Xbox Media Center,后更名为Kodi)设计的扩展工具,版本号为1.3.1。这个工具的主要功能是增强用户的媒体库体验,使得用户能够在XBMC平台上浏览和访问更多的电影资源。它...
文件下载,多线程下载。断点下载等简单封装的aar包
管理员登录图书管理软件系统可以进行读者管理、书籍管理、借阅情况查询分析。读者管理包括读者基本信息的添加、删除、修改以及根据读者编号和姓名查询读者信息,书籍管理包括书籍基本信息的添加、删除、修改以及根据...
在这个特定的案例中,我们关注的是如何在ASP.NET Core项目中引用并使用来自其他程序集的Controller控制器。这通常涉及到项目的模块化设计,使得代码组织更加清晰,可重用性更强。 在ASP.NET Core中,Controller是...
在MyLibrary的压缩包文件"**MyLibrary-main**"中,我们可以预期找到以下内容: 1. HTML文件:包含图书馆的主要页面结构和内容。 2. CSS文件:定义了页面的样式和布局。 3. JavaScript文件:提供了用户交互和动态...
#### 三、解决WPF DLL应用中Main方法的问题 在将WPF项目封装成DLL后,可能会遇到以下错误: > Program'SQLiteManager.exe'doesnotcontainastatic'Main'methodsuitableforanentrypoint 该错误提示表明在SQLite...
综上所述,MYLIBRARY图书管理系统通过Spring Boot和Mybatis的结合,构建了一个强大且易用的图书管理平台,涵盖了用户管理、图书管理、借阅操作、查询功能以及安全控制等多个方面。此外,其设计考虑到了系统的可扩展...
2. **src/main/resources**:存储非编译代码的资源文件,如配置文件、图片或数据库连接字符串。 3. **build.gradle**:项目构建文件,定义了项目依赖、编译设置和插件配置。 4. **settings.gradle**:配置项目结构和...
"mylibrary_master.zip" 是一个包含Qt图书管理系统的源代码压缩包,主要使用C++语言编写,适合初学者学习Qt GUI(图形用户界面)和线程系统的基础应用。这个项目可能是一个简易的个人图书馆管理系统,用于管理和跟踪...
MYLIBRARY图书管理系统 是基于Spring Boot + Mybatis 开发的图书管理系统, 系统具有用户管理、角色管理、应用管理、图书分类管理、图书信息管理、借书管理、还书管理、图书检索、借还记录等功能。 后端 基础框架:...
【图书管理系统】是一个基于SSH(Struts2、Hibernate和Spring)框架开发的应用示例,它展示了如何在实际项目中整合这三个技术。SSH是Java Web开发中的一个流行组合,提供了模型-视图-控制器(MVC)的设计模式,帮助...
6. Web.config:配置文件,包含应用程序的配置信息,如数据库连接字符串。 通过分析和实践这个“图书管理系统-C#”项目,初学者可以深入理解ASP.NET MVC的工作原理,学习如何使用C#进行Web开发,以及如何利用ORM如...
java6 string源码 一、ListView android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WebView、ExpandableListView、GridView、ScrollView、Horizontal ...