struts2注解使用拦截器interceptor和interceptor-stack

<!-- pc用户中心操作,必须登录 -->
	<package name="user_login" namespace="/"  extends="json-default,struts-default">
		<interceptors>
   			<interceptor name="ress" class="com.common.interceptor.ErrorInterceptor" />
   			<interceptor name="UserIsLogin" class="com.common.interceptor.Check_P_UserIsLogin" />
    		<interceptor-stack name="defaultStacks">
				<interceptor-ref name="ress"></interceptor-ref>
				<interceptor-ref name="UserIsLogin"></interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
    		</interceptor-stack> 
    	</interceptors>   
		<global-results>
			<result name="ploginUI">/WEB-INF/jsp/pc/login.jsp</result>
			<result name="error">/WEB-INF/jsp/pc/404.jsp</result>
			<result name="input">/WEB-INF/jsp/pc/404.jsp</result>
		</global-results> 
	</package>


拦截器如上

注意Action配置,@ParentPackage需要设置为拦截器的package name或者继承,否则出错


出错信息为:

"Unable to find interceptor class referenced by ref-name XYZ"

因为拦截器convention扫描Action类时,没有Interceptor指定的拦截器。

处理方式为:

1使用@ParentPackage注解(或者指定struts.convention.default.parent.package)指定定义了该Interceptor的package;

2创建一个package并继承定义了该Interceptor的package,同时使用@ParentPackage(或者 struts.convention.default.parent.package)指定该package


下面附运行解决方案:
@Controller
@Scope("prototype")
@Namespace("")
@ParentPackage("user_login")
@Results(value={
@Result(name = "ann_json", type = "json",params={"root","jsonMap"}),
@Result(name = "ann_user",location = "/WEB-INF/jsp/pc/user/user.jsp"),
@Result(name = "ann_userInfo",location = "/WEB-INF/jsp/pc/user/info.jsp"),
@Result(name = "ann_registerError",location = "/WEB-INF/jsp/pc/register.jsp"),
@Result(name = "ann_login" ,location="/WEB-INF/jsp/pc/login.jsp")
})
public class PuserAction extends BaseAction<User> {
private static final long serialVersionUID = 2324932911275746283L;

	//查询用户基本信息
	@Action(value = "ann_info",interceptorRefs={@InterceptorRef("defaultStacks")})
	public String ann_info(){
		User users = (User) ActionContext.getContext().getSession().get("user");
		System.out.println((null!=users)+"是否存在session");
		if(null!=users){
			login_user = users;
		}
		return "ann_userInfo";
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值