刚开始学拦截器照着课本打,刚开始

1、Map<String,Object>……这里一直报错我怀疑是使用最新struts(struts2 5.3),标准已经改变,如果是其他原因我真是不知道了,这一句话在同学(struts2 3.*)的电脑上跑的很好。

2、课本行不通,我看了《java web 技术整合应用于项目实践》关于自定义拦截器这一章,也是照着写的,以下是自定义拦截器的代码:

public String intercept(ActionInvocation ai) throws Exception {
		//获取Action实例
		Object object=ai.getAction();
		if(object!=null){
			if(object instanceof PublicAction){
				PublicAction ac=(PublicAction)object;
				//获取用户提交的评论内容
				String content=ac.getContent();
				String title=ac.getTitle();
				System.out.println(content);
				if(content.contains("草")||title.contains("草")){
					//代替
					content=content.replaceAll("草", "*");
					title=title.replaceAll("草", "*");
					//把替代后的评论内容设置为Action的评论内容
					ac.setContent(content);
					ac.setTitle(title);
				}
				//对象不空,继续执行
				return ai.invoke();
			}
			else{
				//返回Action中的LOGIN逻辑视图字符串
				return Action.LOGIN;
				
			}
			
		}
		return Action.LOGIN;
	}

  看起来比课本上的简单多了不是吗,但是运行出现HTTP 500的报错。

String content=ac.getContent(); 这一句取到的是null

3、找到问题了 

<interceptors>
<!-- replace是拦截器的名字 -->
<interceptor name="replace" class="interceptor.MyInterceptor"></interceptor>
</interceptors>

这个 要在struts.xml里(我是把这句放在了struts-***里,然后在struts.xml里include了一下)

posted on 2017-10-18 13:15  Amy鱼  阅读(509)  评论(0编辑  收藏  举报