Struts 的Action问题
编写了一个简单的登录页面,在action进行校验,然后在页面中有一个
<div><font color="red"><s:actionerror /></font></div>
用来struts提示错误信息使用,下面是action中的方法:
String code = (String) ServletActionContext.getRequest().getSession().getAttribute("checkcode"); if(code.equals(checkcode)) { List<User> list = userService.login(loginname, password); if(list == null || list.size() == 0) { this.addActionError("用户名或密码错误!"); return LOGIN; } ServletActionContext.getRequest().getSession().setAttribute("user", list.get(0)); List<Menu> menuList = (List<Menu>) ServletActionContext.getRequest().getSession().getAttribute("menuList"); if(menuList == null) { menuList = menuService.getNeed(0); ServletActionContext.getRequest().getSession().setAttribute("menuList", menuList); } }else { this.addActionError("验证码错误!"); return LOGIN; } return "loginSuccess";
<action name="user_*" class="userAction" method="{1}"> <result name="login">/jsp/login.jsp</result> <result name="loginSuccess">/jsp/index.jsp</result> <result name="input">/jsp/login.jsp</result> </action> <action name="index" class="indexAction"> <result>/jsp/login.jsp</result> </action>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
回复
信息错误之后再填写提交 可以执行到login方法里么
是的呀,第一次提交能进入这个方法执行,成功了也能成功跳转,失败了也能显示错误信息,但是再填信息就不会变了.
打了断点了,第一次启动服务的时候可以进入方法,然后如果登录失败重新登录,就不会再进入这个方法了.
不可以,不会再进入user_login.action了
回复
提交一次错误之后, 用浏览器看看 此时的aciton是指向哪的, 如果正常指向 不应该进不到login里啊
终于解决了 因为spring给Action的bean是单例模式,改成prototype就可以.
userAction的整个类贴出来看看
不行,我感觉是不是缓存的原因 <result name="login" type="redirect">/jsp/login.jsp</result> <!-- 重定向到下面的index.action --> <result name="login" type="redirect">index</result> 这两种配置都不可以,后台打了断点,方法就不会再进去了. 相当于只进入一次.
<result name="login" type="redirect">/jsp/login.jsp</result>
这里的跳转类型改成重定向的方式跳转
Action上面要用@Scope("prototype"),使用单例模式会出现错误.