質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

932閲覧

Struts2 フォームを初期表示でのバリデーションの挙動

rt21

総合スコア29

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2014/09/08 14:02

現在、Struts2を学んでいます。
フォームとアクション、validation.xmlとstruts.xmlを生成し動かしてみたのですが、フォームの情報を初期表示する際に空欄の値に対しStruts2側で毎回値を検証しようとするため、ユーザーが入力完了する前にエラーが表示されてしまいます。
初期表示の空欄に対してはStruts側でバリデーションチェックさせたくないのですが、どこをどのように修正すればいいでしょうか?

下記がそのコードです。アドバイスよろしくお願いします。

----login.jsp

lang

1<title>Login</title> 2<body> 3<h1>Login</h1> 4<s:form action="loginUser"> 5<s:textfield key="loginUserBean.userName" /> 6<s:password key="loginUserBean.password" /> 7<s:submit align="center" /> 8</s:form> 9</body> 10</html>

----struts.xml

lang

1<struts> 2<constant name="struts.devMode" value="true" /> 3<package name="logintest" extends="struts-default"> 4<action name="loginUser" class="foo.user.LoginUserAction" method="execute"> 5<result name="input">/views/user/login.jsp</result> 6</action> 7<action name="loginUser" class="foo.user.LoginUserAction" method="execute"> 8<result name="input">/views/user/login.jsp</result> 9<result name="success">/views/user/thanks.jsp</result> 10</action> 11</package> 12</struts>

----LoginUserAction.java

lang

1public class LoginUserAction extends ActionSupport { 2 3private User loginUserBean; 4public void setLoginUserBean(User loginUserBean) { this.loginUserBean = loginUserBean; } 5public User getLoginUserBean() { return loginUserBean; } 6 7public String login() throws Exception { return this.execute(); } 8public String execute() throws Exception { return SUCCESS; } 9public String input() throws Exception { return INPUT; } 10}

----validation.xml

lang

1<validators> 2<validator type="requiredstring"> 3<param name="fieldname">loginUserBean.userName</param> 4<message>Username is required.</message> 5</validator> 6<validator type="requiredstring"> 7<param name="fieldname">loginUserBean.password</param> 8<message>Password is required.</message> 9</validator>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

状況をお察しします。今のままだと毎回面倒ですね・・。

org.apache.struts2.interceptor.validation.SkipValidationで実行してみてください。

@SkipValidation

lang

1public String execute() throws Exception { return SUCCESS; }

そうすると、最初のパスはvalidationメソッドを無視してくれますよ。ただ、インプットは検証されますが現状よりも良いと思います。

投稿2014/09/09 02:30

udon

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問