Struts2入門 その2 バリデーションの仕組みを理解する(前編) 差分情報

サイト「Struts 2入門(2)~バリデーションの仕組みを理解する(前編)~」を元に差分の技術的要素を記載します。

■前提条件
Struts 2.3.16.3



■プロジェクト
プロジェクトのファイル構成は以下の通り。























■ライブラリ
以下の9ファイルを/WEB-INF/libフォルダへコピーする。(前回と変わりません)

commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
javassist.jar (入手先


■Research-ResearchConfirm-validation.xml
バリデータのDTDファイルを以下の通りに変更しました。

<?xml version="1.0" encoding="UTF-8"?>
<!--
<!DOCTYPE validators PUBLIC  "-//OpenSymphony Group//XWork Validator 1.0.2//EN"  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 -->

<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.3//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">


<validators>
    <!-- 1. 名前フィールドの必須入力チェック -->
    <field name="name">
        <field-validator type="requiredstring">
            <message>名前を入力してください</message>
        </field-validator>
    </field>
    (以下、省略)

DTDファイルが1.0.2の場合、以下のエラーメッセージが表示されて、バリデーションがうまく動作しない。

8 29, 2014 11:35:59 午後 com.opensymphony.xwork2.validator.AnnotationActionValidatorManager error
重大: Caught exception while loading file part2/Research-ResearchConfirm-validation.xml
http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd - Class: sun.net.www.protocol.http.HttpURLConnection
File: HttpURLConnection.java
Method: getInputStream
Line: 1624 - sun/net/www/protocol/http/HttpURLConnection.java:1624:-1
    at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:119)
    at com.opensymphony.xwork2.validator.DefaultValidatorFileParser.parseActionValidatorConfigs(DefaultValidatorFileParser.java:82)
    (省略)
Caused by: java.io.FileNotFoundException: http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:640)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1290)
    (省略)


参考サイト:Struts 2 Validation Using XML File Tutorial | DZon


■research.jsp
DMI(Dynamic Method Invocation)はセキュリティ上よろしくないため、
Struts2.3.15.2からデフォルトで使用できないようになりました。

そのため、フォームのアクションを以下のように変更しました。

<!-- <s:form action="Research"> -->
<s:form action="ResearchConfirm">
<s:textfield name="name"   label="名前" />
<s:textfield name="email"  label="メールアドレス" />
<s:textfield name="age"    label="年齢" />
<s:radio     name="career" label="どの携帯のCMが好き?"
             list="#{'1':'ドコモ', '2':'au', '3':'ソフトバンク'}"/>
<!-- <s:submit value="確認" action="ResearchConfirm" /> -->
<s:submit value="確認" />
</s:form>

参考サイト
Struts 2 Security Vulnerability - Dynamic Method Invocation
Apache Struts 2 Documentation Version Notes 2.3.15.2



■実行結果

・トップ画面







・入力画面







・確認画面






・バリデーション結果画面









以上

最新

【PHP】スーパーグローバル変数 $_GET $_POST $_REQUEST

スーパーグローバル変数 $_REQUESTは、HTTPメソッドがGETとPOSTのいずれの場合もデータを取得することができる。 $_REQUEST['xxx'] $_GET['xxx'] $_POST['xxx'] ...