Action经过拦截器后获取不到值

ljppengge 2012-02-23 10:54:00
--------structs.xml-------------------------
<package name="default" extends="struts-default" namespace="/">
<interceptors>
<interceptor name="myinterceptor" class="interceptor.LoginInterceptor"></interceptor>
</interceptors>
<default-interceptor-ref name="myinterceptor"></default-interceptor-ref>
<global-results><result name="error">/error.jsp</result></global-results>
<action name="testaction" class="action.TestAction" method="{1}">
<interceptor-ref name="myinterceptor"></interceptor-ref> <result name="login">/login.jsp</result>
<result name="index">/index.jsp</result>
<result name="workDetail">/workDetail.jsp</result>
<result name="work">/work.jsp</result>
<result name="reg">/reg.jsp</result>
<result name="updatepwd">/updatepwd.jsp</result>
</action>
</package>
------------------------Interceptor-------------------------------------

public class LoginInterceptor extends AbstractInterceptor {
@Override
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
//String actionname=invocation.getProxy().getActionName();
String method=invocation.getProxy().getMethod();
ActionContext ctx=invocation.getInvocationContext();
HttpServletRequest request=ServletActionContext.getRequest();
String username=request.getParameter("user.userName");
String userpwd=request.getParameter("user.userPwd");
System.out.println(username+"----------"+userpwd);
ServletActionContext.getResponse().setCharacterEncoding("gbk");
Map<String,Object> session=ctx.getSession();
User user=(User)session.get("user");
if(!"dologin".equals(method)){
if(user==null){
//request.setAttribute("msg","<script>alert('没有登录!');</script>");
return "login";
}
}
return invocation.invoke();
}

}
-----------------------------------Action-------------------------------
public String dologin(){
if(null==user.getUserName()||null==user.getUserPwd())
return "error";
user=testservice.login(user.getUserName(), user.getUserPwd());
if(null==user){
this.getRequest().put("msg","<script>alert('用户名或密码错误!');</script>");
return "login";
}
List<WorkPlan> workplans=testservice.viewWorkPlanDetail(user,workPlanId,up_workPlanId);
this.getSession().put("user",user);
this.getRequest().put("workplans",workplans);
return "index";
}

--------------------------------jsp-----------------------------------

<form action="testaction!dologin.action" onsubmit="return getRoles();" method="post">
<div style="background:url(images/bg/bg_right.jpg);width:400px;height:270px;margin:0 auto;">
<div><span class="span">用户名:</span><input class="username" type="text" id="user.userName" name="user.userName"/></div>
<div><span class="span2">密码:</span><input class="password" type="password" id="user.userPwd" name="user.userPwd"/></div>
<div class="submitdiv"> <input type="submit" class="btn" value="登 录"/>
<input type="reset" class="btn" value="重 置"/></div>
</div>
</form>
-------------------------------------------------------------------
请教各位大虾,为什么经过过滤器后就得不到user.getUserName()的值了....
求指教..
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
宏Lee 2012-02-23
  • 打赏
  • 举报
回复
是因为你自定义的拦截器会覆盖原来的,struts就是靠defaultStack拦截器栈,所以加上就行了,记得结贴哦,亲
ljppengge 2012-02-23
  • 打赏
  • 举报
回复
好了,谢谢呀,不过为什么加上这一句就好了呢...
宏Lee 2012-02-23
  • 打赏
  • 举报
回复
<interceptor-ref name="myinterceptor"></interceptor-ref>的上面加上一句<interceptor-ref name="defaultStack"></interceptor-ref>

67,513

社区成员

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

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