职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1050|回复: 9

悲剧的struts2-convention-plugin

[复制链接]
楠楠 发表于 2011-8-28 09:28 | 显示全部楼层 |阅读模式
好吧,虽然是零配置思想但是默认设置我很不喜欢

我更倾向于/namespace/actionName/method.do的访问路径

至于result则在默认/Web-inf/content的基础上自定义一遍一般jsp的文件名与method取相同的名称

为了这个目标,我开始进行设置,

Java代码  
@Results( { @Result(name = "success2", location = "login/login.jsp"),   
        @Result(name = "input", location = "/index.jsp") })   
@Namespace("login")   
public class LoginAction extends BaseAction {   
  
    public String login2() {   
        userService.count(User.class);   
        List<Staff> list = userService.count2(Staff.class);   
        System.out.println("login");   
        return "input";   
    }   
  
    public String log() {   
        userService.count(User.class);   
        List<Staff> list = userService.count2(Staff.class);   
        System.out.println("log");   
        return "success2";   
    }   
}  

@Results( { @Result(name = "success2", location = "login/login.jsp"),
                @Result(name = "input", location = "/index.jsp") })
@Namespace("login")
public class LoginAction extends BaseAction {

        public String login2() {
                userService.count(User.class);
                List<Staff> list = userService.count2(Staff.class);
                System.out.println("login");
                return "input";
        }

        public String log() {
                userService.count(User.class);
                List<Staff> list = userService.count2(Staff.class);
                System.out.println("log");
                return "success2";
        }
} 我希望的是访问login2路径为:/login/login!login2.do result:/login/login.jsp
log的访问路径为:/login/login!log.do result:/index.jsp
经过一番配置 发现2个问题,访问路径为:/login/login.do struts2直接就进入了jsp页面,问题是没有这个action,如果说默认的话断点2个方法没进。

另外发现一只报找不到login2.do()和log()的错误,后缀是正确的 我设置过了。

无处不在 发表于 2011-8-28 09:28 | 显示全部楼层
例如这种异常:
java.lang.IllegalArgumentException: The login2() is not defined in action class com.opensymphony.xwork2.ActionSupport

为什么struts认为login2定义在ActionSupport中?

<!-- 后缀 -->
<constant name="struts.action.extension" value="action,do,," />
<!-- 默认地址 -->
<constant name="struts.convention.result.path" value="/WEB-INF/content/" />
<!-- 后缀 -->
<constant name="struts.convention.action.suffix" value="Action" />
<constant name="struts.convention.action.mapAllMatches" value="true" />

设置应该是没问题的
访问路径:http://localhost:8080/s2sh/login/login!login2.do
第一个login是namespace 第二个是action(LoginAction)

愚人 发表于 2011-8-28 09:28 | 显示全部楼层
问题解决了,还真的与 extends ActionSupport 有关

难道 2者不能共存??

芷馨 发表于 2011-8-28 09:28 | 显示全部楼层
快疯掉了,我加上ActionSupport  出错:The login2() is not defined in action class com.opensymphony.xwork2.ActionSupport

去掉ActionSupport   还是出这个错误。

难道strus2有缓存???????????



钰云 发表于 2011-8-28 09:29 | 显示全部楼层
最终应该是解决了。

@Namespace("login")

应该为

@Namespace("/login")

悲催的往干净了,希望大家引以为戒。

醉倚西风 发表于 2011-8-28 09:29 | 显示全部楼层
貌似从头到尾悲剧的不是struts2.

yoyo 发表于 2011-8-28 09:29 | 显示全部楼层
其实我更多的是无言以对……

曾经的小孩 发表于 2011-8-28 09:29 | 显示全部楼层
官方有文档的,感觉Result那块的处理还不能做到零配置,这块没Grails做的彻底

broken 发表于 2011-8-28 09:29 | 显示全部楼层
这样一堆堆的注解的,什么零配置……

无处不在 发表于 2011-8-28 09:29 | 显示全部楼层
基于注解的配置我没发现比xml好在哪里,xml我搜还比较好搜,一看就知道,请问用注解究竟好在哪里?
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-29 16:27 , Processed in 0.151962 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表