相信大家一定看到了两个class中定义了一样的action,不过看类的元数据,是不同的命名空间。这里比较重要(对我来说)的是

@Action(value = "/login", results = {
@Result(name = "sucess", location = "/index.jsp"),
@Result(name = "chain", location = "chain", type = "chain"),// 同namespace下
// chain
@Result(name = "otherNsChain", type = "chain", params = { "namespace",
"/user", "actionName", "chain" }),// 不同namespace下
@Result(name = "redirect", type = "redirect", location = "redirect.action"),// 同namespace
@Result(name = "otherNsRedirect", type = "redirect", location = "/user/redirect.action"),// 不同namespace
@Result(name = "redirectAction", type = "redirectAction", params = {
"actionName", "redirectAction" }),// 同namespace
@Result(name = "otherNsRedirectAction", type = "redirectAction", params = {
"namespace", "/user", "actionName", "redirectAction" }) // 不同namespace
})

这里面results的配置,当result的type是chain的时候,如果是同一个命名空间,那么就可以直接写一个
action的name,如果加上后缀名比如.action的话struts就会报错,找不到execute()方法,如果不是同一个命名空间下,则需要
添上params,params是一个String数组形式的容器,{“key1”,“value1”,“key2”,“value2”}以这种形式书
写,关与params的更多信息可以参考xwork-core包里的

com.opensymphony.xwork2.ActionChainResult.class

。redirect的一致,如果在不同的命名空间,直接写命名空间+action的名字。
redirectAction的和chain差不多,但也有些许的区别。redirectAction没有location的配置,action的
name需要在params里面配置,key为actionName,namespace也需要在params里面配置,key为namespace。更
多的请参考struts-core下的

org.apache.struts2.dispatcher.ServletActionRedirectResult.class

。下面附上一些常用的几个result type的类

 <result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
  1. 基本上常用的以上都有了,包括上面提到的chain和redirectAction。 其实这些在struts-default.xml 也可以找到 。这些类里面有他们可接受配置的demo。
  2. 写2个在搭建环境的时候遇到的异常。
  3. java.lang.NoSuchMethodException:
    com.struts2.action.IndexAction.execute()
    可能是是配置有问题,比如我在上文说的在action的name中加上了后缀名或者也可能是在配置的时候action名前写了一个/ 。@Result(name="chain", location = "chain",type="chain")这句代码如果在location的chain前加一个/,可能也会造成这个异常。
    • 还有一个异常是 提示没有create方法,这个可能是因为struts里面rest的插件和action冲突了。
    • 注:以上两个异常不一定就是我说的问题引发的,真正的原因还是需要你自己去细细排查来确认的。

Struts2 注解模式的更多相关文章

  1. Annotation(四)——Struts2注解开发

    Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...

  2. Struts2注解开发

    Hibernate和spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...

  3. struts2注解

    一.配置web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.ap ...

  4. Struts2注解使用说明

    Struts2注解 1 Struts2注解的作用 使用注解可以用来替换struts.xml配置文件!!! 2 导包 必须导入struts2-convention-plugin-2.3.15.jar包, ...

  5. Struts2注解 特别注意

    1 Struts2注解的作用 使用注解可以用来替换struts.xml配置文件!!! 2 导包 必须导入struts2-convention-plugin-2.3.15.jar包,它在struts2安 ...

  6. spring的配置模式与注解模式基础

    “依赖注入”是spring的核心特征,在Web服务器(如Tomcat)加载时,它会根据Spring的配置文件中配置的bean或者是通过注解模式而扫描并装载的bean实例自动注入到Application ...

  7. Struts2注解学习1

    这是开博的第一篇,我希望每天把我学到的东西记录下来,成为一个知识库,方便以后的学习和分享 在项目中看到用struts2注解来做,很方便,做了一个用户登录的例子 1.加载所需jar包 commons-f ...

  8. Struts2 注解(转)

    转自:http://blog.csdn.net/wwwqvod/article/details/6214431 也叫Zero Configuration(零配置),它省去了写xml文件的麻烦,可以直接 ...

  9. struts2注解redirect传递参数解决方案时,中国的垃圾问题

    struts2注解redirect传递参数解决方案时,中国的垃圾问题 试过很多方法  tomcat 编码  .字符串转换 .URLEncoder  .. 但是,没有解决方案,然后仔细阅读   stru ...

随机推荐

  1. 源码安装svn 1.8.9

    2014年5月25日 12:26:14 需要文件: svn apr apr-util sqlite3 serf svn : http://subversion.apache.org/download/ ...

  2. 一个查看Access数据库密码的工具

    一个可以查看Access数据库密码的工具AccessCracker.需要.net2.0环境支持. 网盘地址:https://pan.baidu.com/s/1btbsFcsKO0Enj-rjkTlz6 ...

  3. Python常见面试(习题)——水仙花数

    今天,给大家分享一个习题. 用python输出100到1000以内的水仙花数. 相信很多小伙伴都听到过,或者遇到过这个题目. 那么今天就来带大家做一做这道题. 首先,我们要知道什么是水仙花数, (@_ ...

  4. 一个洛谷Material化的Stylish美化主题

    Luogu Argon Design 新主题 Luogu Argon Design 目前已经取代了 Luogu Material,但这并不代表 Luogu Material 会停止更新,在 Luogu ...

  5. Educational Codeforces Round 41 (Rated for Div. 2)

    这场没打又亏疯了!!! A - Tetris : 类似俄罗斯方块,模拟一下就好啦. #include<bits/stdc++.h> #define fi first #define se ...

  6. redis 相关知识点

    (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...

  7. querySelector/querySelectorAll选择器两个容易忽略的点

    jquery写得多了,原生js大API就容易忘.如果你也是这样,一起来回顾一下HTML5的类jquery选择器querySelector和querySelectorAll吧,querySelector ...

  8. Redis集群主从复制(一主两从)搭建配置教程【Windows环境】

    如何学会在合适的场景使用合适的技术方案,这值得思考. 由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基 ...

  9. Codeforces.1041F.Ray in the tube(思路)

    题目链接 \(Description\) 有两条平行于\(x\)轴的直线\(A,B\),每条直线上的某些位置有传感器.你需要确定\(A,B\)轴上任意两个整点位置\(x_A,x_B\),使得一条光线沿 ...

  10. 正睿OI 提高 Day1T3 ZYB玩字符串(DP)

    题目链接 设可能的答案串为p,长为len.p一定是s的一个子串且len|n. 虽然一些p在s中可能被断成若干段,但删掉其中的若干段后,这段区间一定会被全部消掉. 于是枚举p后,可以用f[i][j]表示 ...