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; } }