重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

strutsのvalidatorを使用するため
「struts-config」のactionタグに以下の修正を入れると思います。

 ・validate = true
 ・input  = "エラー時に遷移するページ"

上記の修正後、実行すると
画面の初期表示時に、どうやらinputで指定した画面に遷移してしまいます。

エラー時に遷移するための指定かと思ったのですが
画面初期表示時にも読み込まれるのでしょうか?

画面表示で分割して表示している所為でしょうか?

・validatorでのエラーはポップアップで表示したいと思っています。

・該当する1画面表示に対しての配置は以下になります。

 (1)Menue.html
  -(2)Top.jsp※共通なヘッダ部分
  -(3)Main.html
    -(4)Init.jsp※検索結果表示部分
    -(5)Search.html
      -(6)Search_Up.html※上部の表示部分
      -(7)Sarch_In.jsp※検索条件入力部分

※初期表示は(1)の画面で、validatorを使用するのは(7)の画面です。

(7)の画面には以下を追加しました。

 追加⇒<html:javascript formName="対象Form名"/>
  <html:form action="actionのpath名.do?
  action=search" method="post" target="view"
 追加⇒onsubmit="return validate対象Form名(this)">

1つの画面に対して細かく資産を分けてしまうと
validatorを利用する際にうまく画面遷移が出来ないのでしょうか?

A 回答 (2件)

> <html:link page="/search.do&action=init" ・・・・>



このURLの指定方法はどこから得た知識でしょうか?
一般的なStrutsの使い方をしていないような気がします。
特に、"&"は何を表しているのでしょうか。

現在の記述を見ると、バリデーション機能を利用しようとしていますが、
バリデーション機能を除いて正しくStrutsは利用できているのでしょうか。

もしStrutsを正しく利用できていないのであれば、
単なる1遷移を実装するなどして正しい利用方法を理解した上で、
バリデーションの機能を利用するなどしたほうが良いかもしれません。

この回答への補足

&はリクエストとして渡している値です。
既に完成されているプロジェクトに対し
今回リファクタリングを行なうのですが
独自に作りこまれている為、strutsの使い方としては
生かしきれてない作りになっています。

今回の件については解決いたしました。

⇒バリデーション機能について、呼ばれるタイミングが
 画面に追加したonsubmitのタイミングだと思い込んでいました。
 
 しかし、バリデーション機能を設定したActionが起動されたときに
 実行されるので、今回は画面開設時の初期処理の前で呼ばれ
 エラーを返却しているため、本来の画面が開設される前にエラー画面に
 遷移していました。
 
 1画面につき1Actionのつくりをしているため
 問題を解決するにはstruts-configでActionを別名定義し
 バリデーションを起動したくない処理はvalidate=falseと
 設定すれば実現可能かと思います。
 
 しかし、検討の結果とスケジュールの都合上
 今回バリデーションを利用することはあきらめました・・・
 
 今後もリファクタリングを行う予定なので
 その時に再検討したいと思っています。

補足日時:2012/08/30 10:44
    • good
    • 0

まず何よりも先にstruts-config.xmlの内容を提示してください。



質問内容から、少なくとも初期表示Actionと検索ボタン押下Actionの記述は必要かと。

この回答への補足

失礼しました。
struts-configのaction定義は以下になります。
初期表示と検索部分をコメントしています。
他も色々と細かい遷移先がありますが
正常ルートではない遷移なのでここでは説明を割愛させていただきます。

<action path="/search"
type="com.aa.AA.searchAction"
name="searchForm"
validate="true"
input="/JSP/AA/Search_In.jsp">

<!--初期表示--><forward name="init" path="JSP/AA/Menu.html"/>
<forward name="over_init" path="JSP/AA/Init.jsp"/>
<!--検索--><forward name="search" path="JSP/AA/Search_Res.jsp"/>
<forward name="refresh" path="JSP/AA/Search_Res.jsp"/>
<forward name="search_over" path="JSP/AA/Search_Res.jsp"/>
<forward name="search_over_refresh" path="JSP/AA/Search_Res.jsp"/>
<!-- 以下、異状系のエラー -->
<forward name="error_search" path="JSP/CW/Error.jsp"/>
<forward name="error_refresh" path="JSP/CW/Error.jsp"/>
<forward name="error_download" path="JSP/CW/Error.jsp"/>
</action>

ひとつ画面を記述し忘れていました。
(8)検索結果表示※Search_Res.jsp
(4)の画面は初期表示時のみになります。

メニュー画面(他の画面)からこの画面のActionのinitが呼ばれるはずなのですが
<html:link page="/search.do&action=init" ・・・・>
initのログは出力されていませんでした・・・
initが呼ばれずにいきなりinputで指定した画面が表示されているっぽいです。

補足日時:2012/08/28 13:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!