Struts温习(5)--アクションFormのvalidatorメソッドの検証


今のこの検証は、最初の文章のそれとはまた違っています.これまではリソースファイルを配置したり、配置検証ファイルを配置したりしていましたが、今回はアクションFormの中の一つのvalidatorメソッドでコードを手作業で書くだけの方法で、実現した登録検証効果は同じです.
login.jsp
 
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Struts     :    </title>
  </head>
  
  <body>
    <h3>Struts     :    </h3><hr/>
    <ul style="color:red">
    <html:messages id="msg">
    	<li>${msg}</li>
    </html:messages>
    </ul>
    <form id="myForm" name="myForm" action="login.do" method="post">
    	<table border="1" width="600px">
    		<tr>
    			<td>   </td>
    			<td><input type="text" name="loginname"/></td>
    		</tr>
    		<tr>
    			<td>  </td>
    			<td><input type="password" name="pwd"/></td>
    		</tr>
    		<tr>
    			<td colspan="2" align="center">
    				<input type="submit" value="  "/>&nbsp;
    				<input type="reset" value="  "/>
    			</td>
    		</tr>
    	</table>
    </form>
    
  </body>
</html>
 
 Login Form.java
 
package com.javacrazyer.web.formbean;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 *            .
 *                      
 * 
 */
public class LoginForm extends ActionForm {
	
	private static final long serialVersionUID = 6619272689058619128L;

	private String loginname;
	
	private String pwd;
	
	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		System.out.println("*******  LoginForm reset  ");
		this.pwd = null;
		this.loginname = null;
		
		super.reset(mapping, request);
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		System.out.println("  LoginForm validate  ------");
		//       null ActionErrors         ,      。      ,     <action>   input     URL
		ActionErrors errors = new ActionErrors();
		if(this.loginname == null || "".equals(this.loginname)){
			ActionMessage msg = new ActionMessage("       ",false);
			errors.add(ActionErrors.GLOBAL_MESSAGE, msg);
		}
		
		if(this.pwd == null || "".equals(this.pwd)){
			ActionMessage msg = new ActionMessage("      ",false);
			errors.add(ActionErrors.GLOBAL_MESSAGE, msg);
		}
		
		return errors;
	}

	public LoginForm(){
		System.out.println("           LoginForm     ");
	}

	public String getLoginname() {
		return loginname;
	}

	public void setLoginname(String loginname) {
		this.loginname = loginname;
		System.out.println("  setLoginname()  ");
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
		System.out.println("  setPwd()  ");
	}
}
 WEB-INF/struts-config.xml
 
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>

<!-- ================================================ Form Bean Definitions -->
    <form-beans>
		<form-bean name="loginForm" type="com.javacrazyer.web.formbean.LoginForm"/>
		<form-bean name="regForm" type="com.javacrazyer.web.formbean.RegisterForm"/>
    </form-beans>

<!-- =========================================== Action Mapping Definitions -->
    <action-mappings>
	<action path="/login" name="loginForm" type="com.javacrazyer.web.action.LoginAction" validate="true"		
		   input="/index.jsp">
			<forward name="succ" path="/login_success.jsp"/>
			<forward name="failure" path="/login_failure.jsp"/>
		</action>
    </action-mappings>
</struts-config>
 ここの例はvalidator.xmlとvalidator-rules.xmlを使わないでください.資源ファイルも必要ないです.
 web.xmlの配置、LoginnAction、その他のJSPページは全部最初の文章の中のと同じです.ここでは書きません.実現した効果は最初の文章に展示された効果です.