tomcat7 + struts2でwebアプリケーション(6) validate(1)

サーバーサイドでバリデーション。
具体的にはアクションクラスにvalidateメソッドを実装する。

(1)バリデートした結果、問題があれば"input"が返ってくるため、
struts.xmlに記述を追加。(遷移先は入力画面)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
    <constant name="struts.devMode" value="false" />

    <package name="myapp" extends="struts-default" namespace="/">
    	<action name="testAction" class="TestAction">
    		<result name="success">/result.jsp</result>
    		<result name="input">/formTest.jsp</result>
    	</action>
    </package>

</struts>

(2)フォームを持つ入力画面(formTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="testAction">
<s:textfield name="model.username" label="名前"/>
<s:password name="model.password" label="パス"/>
<s:submit value="送信"/>
</s:form>
</body>
</html>

(3)フォーム入力を処理するアクション

import com.opensymphony.xwork2.ActionSupport;


public class TestAction extends ActionSupport {
	private InputModel model = new InputModel();

	@Override
	public String execute() throws Exception {
		return "success";
	}

	public InputModel getModel() {
		return model;
	}

	public void setModel(InputModel model) {
		this.model = model;
	}

	@Override
	public void validate() {
		if(model.getUsername().length() == 0){
			addFieldError("model.username", "username is required.");
		}
		if(model.getPassword().length() == 0){
			addFieldError("model.password", "password is required.");

		}
	}
}

(4)入力情報を保持するクラス

import java.io.Serializable;


public class InputModel implements Serializable{
	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;
	}
}


strutsだと、エラー表示の前後にタグを設定できますが、
struts2で同じ処理ができるかは未確認。