现在的位置: 首页 > 综合 > 正文

Struts2的validate验证

2013年10月12日 ⁄ 综合 ⁄ 共 2058字 ⁄ 字号 评论关闭

接上一篇博文:struts2入门配置

进行重构,加入验证。

要实现效果:

  用户名为hello,密码为world时通过否则验证后进行错误提示

  1. 创建一个登陆页(login2.jsp)
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <html>
    <head>
    <title>Validate Test</title>
    </head>
    <body>
    	<s:form action="login">
    		<s:textfield name="username" label="username"></s:textfield>
    		<s:password name="password" label="password"></s:password>
    		<s:submit label="submit"></s:submit>
    	</s:form>
    </body>
    </html>

    以上的代码中,我们用到了Struts2中常用的UI标签,表单标签:form、textfield、password、submit

  2. 创建Action类(LoginAction.java),继承ActionSupport

    package com.test.action;
    		
    import com.opensymphony.xwork2.ActionSupport;
    		
    public class LoginAction extends ActionSupport{
    		
    	private String username;
    			
    	private String password;
    		
    	public String getUsername() {
    		return username;
    	}
    		
    	public void setUsername(String username) {
    		this.username = username;
    	}
    		
    	public String getPassword() {
    		return password;
    	}
    		
    	public void setPassword(String password) {
    		this.password = password;
    	}
    			
    	public String execute() throws Exception {
    		if ("hello".equals(this.getUsername().trim()) && "world".equals(this.getPassword().trim())) {
    			return "success";
    		} else {
    			this.addFieldError("username", "username or password error");
    			return "failer";
    			}
    		}
    			
    	@Override
    	public void validate() {
    		if(null == this.getUsername() || "".equals(this.getUsername().trim())) {
    			this.addFieldError("username", "username required");
    		}
    		if (null == this.getPassword() || "".equals(this.getPassword().trim())) {
    			this.addFieldError("password", "password required");
    		}
    	}
    }
    

     ActionSupport类实现了一个Validateable接口,该接口有validate()方法,如果action实现了该接口,struts2在调用execute()方法前会先调用validate方法。因此,我们可以将验证放到validate()方法中。

    addFieldError(String fieldName,String errorMessage)是com.opensymphony.xwork2.ActionSupport类下的方法(实现的ValidationAware接口中的方法),给一个字段(属性)添加错误信息(errorMessage存放在一个Map中)
    fieldName:字段(属性)名
    errorMessage:错误信息

  3. struts.xml文件中配置action,添加input和failer
    <struts>
    	<package name="struts2"  extends="struts-default">
    		<action name="login" class="com.test.action.LoginAction">
    			<result name="success">/result.jsp</result>
    			<result name="input">/login2.jsp</result>
    			<result name="failer">/login2.jsp</result>
    		</action>
    	</package>
    </struts>
    
  4. 效果

    不输入用户名和密码

    密码输入错误


抱歉!评论已关闭.