我是靠谱客的博主 专注小霸王,最近开发中收集的这篇文章主要介绍struts2.5框架使用通配符指定方法(常见错误)-- 分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在学习struts框架时经常会使用到通配符调用方法,如下

<action name="*Action" class="usersAction" method="{1}">
<!-- name属性不写默认success -->
<result>/home.jsp</result>
<result name="login">/file.jsp</result>
<result name="input">/login.jsp</result>
<!-- 允许的方法 -->
<allowed-methods>login</allowed-methods>
</action>

其中的action name="*Action"中*这个符号代表的值会传入method=“{1}”中,并对应action类的一个方法名,这样就能很大程度地减少配置文档中action的数目,例如访问:http://localhost:8000/struts_day04/loginAction,loginAction满足条件,login代表的就是*,login就是bean的ID为usersAction的类中的方法名,即调用UsersAction类中的login方法,例如下:

package cn.tedu.web;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import cn.tedu.entity.Users;
/**
* 控制器类
* 作用:处理用户的请求
* @author wq
*
*/
@Controller
@Scope("prototype")
public class UsersAction extends BaseAction{
/** 属性 */
private Users user;
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
/** 登陆验证的方法 */
public String login(){
System.out.println("执行顺序:4进入login()");
if(user != null){
if(user.getName().equals("admin") && user.getPassword().equals("admin")){
return SUCCESS;
}
}
return LOGIN;
}
}

但是在使用这种通配符方法的时候,经常会看到这样的映射错误提示

Struts has detected an unhandled exception:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].

这是由于struts版本的原因,对于Struts2.3之前的版本可以不配置<allowed-methods>,但是对于之后的版本,如果不配置<allowed-methods>将会出现上述异常

添加如下代码

<allowed-methods>Action内的方法名</allowed-methods>

才成功了

其实有好几种方式都可以添加:

1.在相应的action中添加,只对该action起作用: <allowed-methods>login</allowed-methods>

2.在action前面,package里面添加<global-allowed-methods>regex:.*</global-allowed-methods>,对所有action都起作用,注意顺序,否组会报错,因为在struts.xml中标签的顺序是有顺序规定的,还可以<global-allowed-methods>login</global-allowed-methods>,对某一个方法期作用

最后

以上就是专注小霸王为你收集整理的struts2.5框架使用通配符指定方法(常见错误)-- 分析的全部内容,希望文章能够帮你解决struts2.5框架使用通配符指定方法(常见错误)-- 分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部