Struts2 值在验证失败回到原来页面的时候会丢失的解决方案

来源:互联网 发布:oracle拷贝整个数据库 编辑:程序博客网 时间:2024/05/17 05:54

书到用时方恨少,好久不做这个了,今天居然栽在这里了。特此记录,以备后用。


如登录界面保留原来的用户名和密码

login.jsp
[java] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <%@taglib uri="/struts-tags" prefix="s"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.     <title>My JSP 'login.jsp' starting page</title>  
  12.     <meta http-equiv="pragma" content="no-cache">  
  13.     <meta http-equiv="cache-control" content="no-cache">  
  14.     <meta http-equiv="expires" content="0">      
  15.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  16.     <meta http-equiv="description" content="This is my page">  
  17.     <!--  
  18.     <link rel="stylesheet" type="text/css" href="styles.css">  
  19.     -->  
  20.     <style>  
  21.     .errorMessage{  
  22.         color:red;  
  23.     }  
  24.     </style>  
  25.   </head>  
  26.     
  27.   <body>  
  28.         <form action="login" method="post">  
  29.             username:  
  30.             <input type="text" name="user.username"  value="${user.username}"  label="username" />  
  31.             <span class=errorMessage>  
  32.                 <s:property value="errors['user.username'][0]" />  
  33.             </span>  
  34.             <br>  
  35.             password:  
  36.             <input type="password" name="user.password" value="${user.password}" label="password" />  
  37.             <span class=errorMessage>  
  38.                 <s:property value="errors['user.password'][0]" />  
  39.             </span>  
  40.             <br>  
  41.             <input type="submit"  align="left" />  
  42.         </form>  
  43.     <br/>  
  44.     <s:debug />  
  45.   
  46.   
  47.     </body>  
  48. </html>  
LoginAction.java
[java] view plaincopy
  1. package com.action;  
  2. import javax.servlet.http.HttpServletRequest;  
  3. import org.apache.struts2.ServletActionContext;  
  4. import com.domain.User;  
  5. import com.opensymphony.xwork2.ActionContext;  
  6. import com.opensymphony.xwork2.ActionSupport;  
  7.   
  8. public class LoginAction extends ActionSupport {  
  9.     private User user ;  
  10.     public String login(){  
  11.         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get( ServletActionContext.HTTP_REQUEST);  
  12.         if(user==null)  
  13.             return INPUT;  
  14.         String ret = SUCCESS;  
  15.         if(!user.getUsername().trim().equals("admin")){  
  16.             this.addFieldError("user.username""Username Invalid");  
  17.             ret = INPUT;  
  18.         }  
  19.         if(!user.getPassword().trim().equals("1")){  
  20.             this.addFieldError("user.password""Password Invalid");  
  21.             ret = INPUT;  
  22.         }  
  23.         return ret;  
  24.     }  
  25.     public User getUser() {  
  26.         return user;  
  27.     }  
  28.     public void setUser(User user) {  
  29.         this.user = user;  
  30.     }  
  31.     @Override  
  32.     public String execute() throws Exception {  
  33.         System.out.println("login action @ method *execute()");  
  34.         return super.execute();  
  35.     }  
  36. }  

struts.xml
加入拦截器 
[java] view plaincopy
  1. defaultStack  
[java] view plaincopy
  1. <action name="login" method="login"  class="com.action.LoginAction">  
  2.     <interceptor-ref name="defaultStack"/>  
  3.     <result name="success" type="redirect">/success.jsp</result>  
  4.     <result name="login">/login.jsp</result>  
  5.     <result name="input">/login.jsp</result>  
  6. </action>  

结果如下图

其他解决方法:
http://www.blogjava.net/jjshcc/archive/2010/08/03/327870.html 

原创粉丝点击