使用struts2拦截器后,获取不到表单数据

baccolee 2015-08-26 03:26:03
1.拦截器代码:
public String intercept(ActionInvocation invocation) throws Exception {
invocation.invoke();
ActionContext context =invocation.getInvocationContext();
//获得session
Map session = context.getContext().getSession();
String user_name = (String) session.get("user_name");
String user_password = (String) session.get("user_password");
//判断用户合法性
if(user_name == null || "".equals(user_name)) {
//返回用户登陆页面
return Action.ERROR;
} else if(user_password == null || "".equals(user_password)){
return Action.ERROR;
}
else{
//进行下一步操作,没有拦截
return invocation.invoke();
}
}
2.拦截器配置:

<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="userInterceptor" class="com.mifs.interceptor.UserInterceptor"></interceptor>
</interceptors>

<action name="login" class="com.mifs.action.Login">
<result name="success" type="redirect">patientList.action</result>
<result name="error">/login.jsp</result>
<interceptor-ref name="userInterceptor"/>
</action>
</package>
3.login action代码:
public String execute() throws Exception{
UserService userService = UserServiceFactory.getServiceInstance();
User user = new User();
user.setUser_name(user_name);
user.setUser_password(user_password);

Map session = ActionContext.getContext().getSession();
session.put("user_name", user_name);
session.put("user_password", user_password);
if(userService.loginUser(user)){
return SUCCESS;
}
else{
return ERROR;
}
}
执行到login action中时,得到的user_name和user_password为null,去掉拦截器就可以得到正常值了
...全文
261 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
baccolee 2015-08-28
  • 打赏
  • 举报
回复
谢谢,是这个原因,送分了
rushly 2015-08-27
  • 打赏
  • 举报
回复
	<package name="自定义名称" extends="struts-default">
			<interceptors>
				<interceptor name="你的拦截器名称"
					class="你的拦截器"></interceptor>
				<interceptor-stack name="你的Stack名称">
					<interceptor-ref name="你的拦截器名称"></interceptor-ref>
					<interceptor-ref name="defaultStack"></interceptor-ref>
				</interceptor-stack>
			</interceptors>
			<default-interceptor-ref name="你的Stack名称"/>
	</package>
你要把默认拦截器加进去。不然就只过你的拦截器。struts拦截器没生效,值没有封装。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧