↓もし、良かったらSNSでの紹介よろしくお願いします。

Struts2でフォーム処理、バリデーション

bootstrap

はじめに

フォーム画面にバリデーション、スタイル追加

今回やること

下記の記事で作成したフォーム処理画面にバリデーション処理を追加します。

https://www.tech-tech.xyz/form-process/

バリデーションとは?

バリデーションとはフォーム処理を行う際に入力の正しさ確認する処理です。
入力値をチェックすることで
Webアプリのセキュリティやユーザーの入力ミス防止
に役立ちます。

Struts2でバリデーションを行う

バリデーションの定義方法

  1. XMLで書く。(今回はこっちを説明)
    基本的にこちらを使う。
  2. Controllerに書く。
    複雑なバリデーションはこっちに書く。

バリデーションの実行場所

  1. サーバーサイド。(今回はこっちを説明)
  2. クライアントサイド

バリデーションはサーバーサイドとクライアントサイドで行うことができます。
セキュリティの観点からサーバーサイドでの入力値チェックは必須です。
クライアントサイドのバリデーションはサーバー負荷を下げるのに役立ちます。
StrutsではバリデーションのJavaScriptを自動生成してくれるので簡単です。

バリデーション処理を追加

RegisterAction-validation.xmlの作成

バリデーションの定義をするXMLファイルを作成します。
今回はReigsterAction.javaと同じディレクトリに作成しました。
ファイルには次の2つの命名規則があります。
“<アクション名>-validation.xml”
または
“<アクション名>-<アクションエイリアス>validation.xml”

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="person.name">
<field-validator type="requiredstring">
<message>氏名を入力してください。</message>
</field-validator>
</field>
<field name="person.kanaName">
<field-validator type="requiredstring">
<message>フリガナを入力してください。</message>
</field-validator>
</field>
<field name="person.email">
<field-validator type="requiredstring">
<message>メールアドレスが未入力です。</message>
</field-validator>
</field>
<field name="person.email">
<field-validator type="email">
<message>有効なメールアドレスを入力してください。</message>
</field-validator>
</field>
<field name="person.age">
<field-validator type="int">
<param name="min">18</param>
<param name="max">99</param>
<message>年齢を入力してください。</message>
</field-validator>
</field>
</validators>

Struts.xmlの書き換え

Struts.xmlにバリデーションが失敗したときのルーティングを書く必要があります。
inputという戻り値に対してregister.jspを表示するように設定しています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="register" extends="struts-default">
<action name="register" class="register.action.RegisterAction" method="execute">
<result name="success">/complete.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>

スタイルの追加

ここまででバリデーション処理の仕組みはできました。
しかし、このままだと注意が黒字で表示されてわかりにくいです。

フォーム画面にバリデーションを追加

そこで注意が赤字で表示されるようにスタイルを追加します。

これは簡単でregister.jspの<head>の中に<s:head />を追加するだけです。

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>登録画面</title>
<s:head />
</head>
<body>
<s:form action="register">
<s:textfield name="person.name" label="氏名"/>
<s:textfield name="person.kanaName" label="フリガナ"/>
<s:textfield name="person.email" label="メールアドレス"/>
<s:textfield name="person.age" label="年齢"/>
<s:submit value="登録"/>
</s:form>
</body>
</html>