[Struts]Action定義内のinput属性の意味

このQ&Aのポイント
  • Action定義内のinput属性は、エラーが発生した場合の遷移先を指定するために使用されます。
  • ただし、inputという属性名には違和感を感じる人もいるかもしれません。
  • 遷移先の指定という意味では、inよりもoutの方が適切と思われる人もいるようです。
回答を見る
  • ベストアンサー

[Struts]Action定義内のinput属性の意味

いつもお世話になっております。 Actionの定義におけるinput属性に関しての質問させていただきます。 ActionForm内でのvalidateメソッドでエラーになった場合の遷移先 のページを指定する、ということは分かっており、今までもその用途 で使ってきましたが、"input"という属性名に違和感を感じます。 ActionErrorsが返されたときの、単なる「遷移先の指定」なのに、 inputというとあたかも入力項目あるいは遷移元ページのような 印象を受ける。あるいは、遷移先ということに関していえば、 inよりoutでしょ、っていう思いがある。これらが違和感の原因です。 変な質問ですが、何をもってinputなのでしょう? よろしくお願い致します。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • mak_no9
  • ベストアンサー率100% (1/1)
回答No.1

こんにちわ 私の勝手な解釈なので、参考ていどにしかならないと思いますが。。。 例えば、入力→確認→完了という画面遷移の機能があるとします。 validateメソッドの主な用途は入力チェックだと思うので、確認画面・完了画面にて呼ばれることになると思います。 もし、入力チェックでチェックエラーがあった場合、入力画面にてエラーメッセージを表示するのが一般的なので、 エラー発生時の遷移先=入力画面 よって「input」なのかなと考えています。

gongon8
質問者

お礼

mak_no9様 ご回答いただきありがとうございます。 言われてみれば確かに、入力画面をinputとして設定する場面が 多かったように思います。なるほど。。。入力エラー時に 入力エラー専用のページに飛ばすよりも親切ですしね。。。 Struts作者からしてみれば、入力画面へ戻ることを想定している けれど、他のページにも遷移できるよ、という作りにしたほうが 良かったのかもしれませんね。憶測ですが・・・(^^;

関連するQ&A

  • strutsのactionタグinput

    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を利用する際にうまく画面遷移が出来ないのでしょうか?

  • formのaction属性を指定する意味はあるか?

    リクエストの送信元と送信先が異なる仕組みの場合、必要なのは当然ですのでそれは除外します。同一ページ内だけでリクエストのやり取りをするページにおいて、formのaction属性を指定する意味についてです。 HTML5から仕様として明確に不要になりました(そもそも仕様として明確に定義される前から正常に動いていたと思うのですが)。 いくつかのサイトのソースをみたのですが、そもそもaction属性無しのサイトを今のところ発見していません(自分自身に送信という例が少なかったり、Ajaxで処理していたりするサイトが多いというせいもあるのですが)。 いまだにわざわざ記述しているページばかりです。それもHTML5のタグを使い、レスポンシブWebデザインにしているような最新技術を盛り込んで実装しているサイトですらわざわざaction属性を指定している例もありました。 質問は以下です。 ・action属性を指定しなければならない理由が今でも存在するのでしょうか?  (特にHTML5のタグを使用しておきながら、それでもなおaction属性を指定しなければならない理由)。  存在するならその具体的な内容も教えてください。 ・もしかするとセキュリティの問題が発生することがあるのでしょうか? ・何となく昔から書いてるから、惰性や習慣で書き続けているだけでしょうか?  というかそもそも省略可になったということを知らない人が多いということなのでしょうか? よろしくお願いします。

  • Java struts Formを分ける

    Java Struts1.3.10 1jspにつき1Formとし、A.jspからB.jspへ遷移させようと思っています。 しかしA.jspは正常に表示されるのですが、遷移後エラーが発生します。 Bean AForm のプロパティ AList に対するゲッターメソッドがありません 遷移後に見てほしいのはBFormなのですが、AFormを見てしまっています。 どのようにすればBFormを参照することができますでしょうか? struts-config.xml <action attribute="AForm" input="/pages/A.jsp" name="AForm" path="/Result" type="jp.co.elephan.rental.action.Aaction" scope="session" validate="true" parameter="insert"> <forward name="Result" path="/pages/B.jsp" /> <forward name="Return" path="/pages/A.jsp" /> </action> <!-- --> <action attribute="BForm" input="/pages/B.jsp" name="BForm" path="/Return" type="jp.co.elephan.rental.action.Baction" scope="session" validate="true" parameter="yes,no"> <forward name="Result" path="/pages/A.jsp" /> <forward name="Return" path="/pages/B.jsp" /> </action> 以上です。

    • ベストアンサー
    • Java
  • formとactionとmethodについて

    初心者的な質問で申し訳ないのですが、 formを複数作りたい場合、メソッドをpost/get別々に指定したり、actionを別々のリンクを指定とかって出来たりするんでしょうか。 <form action="next.php" method="post">inputとか</form> <form action="prev.tpl" method="get">hiddenとか</form> 見たいな感じで、それぞれが別々、若しくは <form action="next.php" method="post">inputとか</form> <from action="next.php" method="get">inputとか</form> 見たいな感じで、リンク先は一緒だけどメソッドは違う等の指定方法を教えていただければと思います。 もし、指定出来ることは出来るが、javascriptで制御しなけらばならない等あるのでしたら、 その記述例等も一緒に教えて頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • struts:input type="text"とhtml:textの違いは?

    はじめまして。 strutsのhtmlタグで質問があります。 Formの中にvalidateを実装しました。 画面にエラーメッセージを表示するまではうまくいきましたが、 遷移前に入力した値を保持し再度表示してくれません。 原因を調べてみると、 <input type="text" name="hoge"> ではなく、 <html:text property="hoge"/> ならば値を保持してくれることがわかりました。 ここで質問なのですが、 (1)strutsでは、値の保持のため<html:text~>を使うのが妥当なのか? (2)strutsで<input type="text"~>を使用する場合、どういう実装をすれば値をjspに渡せるのか? (sessionに格納するのはなんとなくわかります。ですが、strutsの場合、ActionとFormだけで動作しますし、通常のsetAttribute("hoge","value");をどこで入れるのが適切なのかわかりませんでした。 初心者な問題で申し訳ありませんが、strutsをより理解したいため、お分かりになる方教えていただけないでしょうか?よろしくお願いします。

  • strutsのactionクラスで遷移先のBeanを取得する方法

    現在strutsを使用しているのですが,どうしても遷移先のBeanを取得出来ません。 状況としまして、JSP画面が2つあり(仮に画面A,Bとします)、画面Aから画面Bに遷移をしようとしています。 そして画面Aに使用しているプロパティ値を、画面Bにあるプロパティにセットした状態で表示したいのです。 現在actionクラスで画面Aのプロパティ値は、struts-configでnameを画面Aのbean名にすることで、取得できています。 しかし画面Bのbeanのプロパティにセットする際には、actionクラスの引数であるActionFormは画面Aのbeanを指定しているため、使用できず、新たに画面Bのbeanを呼ぶ必要があるのですが、その取得方法がわからないのです。 説明がわかりにくいかもしれませんが、その際は御指摘下さい。 宜しくお願いします。

    • ベストアンサー
    • Java
  • struts-config.xmlの設定

    お世話になります。 strutsを使用しlogin画面を作成し、エラーならエラーメッセージを表示させ、成功なら次のページに遷移するようにしたいのですが、 その際のstruts-config.xmlの設定がわかりません。 login画面を以下のように設定(login.jsp) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <html:html> <head> <title>ログイン画面</title> </head> <body> <html:errors/> <html:form action="/login" method="post"> ユーザID : <html:text property="id"/><br> パスワード: <html:password property="password"/><br> <html:submit value="ログイン"/> </html:form> </body> </html:html> </html> struts-config.xml <form-beans> <!-- sample form bean descriptor for an ActionForm <form-bean name="LoginForm"   //jspのform actionで渡すデータ type="org.apache.struts.validator.DynaValidatorForm"/> end sample --> <!-- sample form bean descriptor for a DynaActionForm <form-property     name="userid" //jsp画面のproperty指定時に渡す type="java.lang.String"/> <form-property name="password" //passwordのとき type="java.lang.String"/> </form-bean> end sample --> </form-beans>      //actionで渡すデータの定義1 <action path="/Login"   //actionで渡すデータ type="org.apache.struts.actions.LoginAction" parameter="/pages/Input.jsp"/> //actionで渡すデータの定義2 <action path="/InputSubmit" type="app.InputAction" name="inputForm" scope="request" validate="true" input="/pages/Input.jsp"/> //actionで渡す定義3 <action path="/edit*" type="app.Edit{1}Action" name="inputForm" scope="request" validate="true" input="/pages/Edit{1}.jsp"/> end samples --> </action-mappings> の箇所を変更するのはわかるのですが、どう変更したらいいかがわかりません。 ログイン成功時画面(loginSuccess.jsp) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <%@ taglib uri="/tags/struts-html" prefix="html" %> LoginSuccess!! <html:form action="/nextpage" method="post"> <html:submit value="次のページ"/> </html:form> </html> と設定してます。 javaクラスの設定も関係あるのですが、今回は省略してます 。今回したいのはlogin.jsp画面を表示させたいのですが、 その際以下のエラーがでます。 org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/login.jsp at line 19 16: </head> 17: <body> 18: <html:errors/> 19: <html:form action="/login" method="post"> 20: ユーザID : <html:text property="id"/><br> 21: パスワード: <html:password property="password"/><br> 22: <html:submit value="ログイン"/> よろしくお願いします。

  • Strutsで「setterメソッドが見つかりません」

    Eclipse+TOMCAT環境でStrutsアプリを作っています。 とりあえずの勉強として、参考書に載ってあるサンプルを作っているのですが、会社では動いたそのサンプルを自宅で同じ手順で実行すると、「index.jsp(24,2) 属性 name のsetterメソッドが見つかりません」と表示されます。最初に表示されるはずのindex.jspファイル内に<html:form action="Lookup" name="lookupForm" type="wiley.LookupForm">と記述しており、ここの解析で出たエラーだと思われるのですが、ActionFormであるLookupFormクラスにはEclipseによるSetter/Getterメソッドの自動生成を行って記述しており、なぜエラーになるのかが分からない状態です。原因となりそうな点をお教えください。宜しくお願いします。

  • formタグのaction属性

    お世話になります。holmonと申します。 先日、とほほ様のJavaScriptリファレンスで調べものをしている最中、わからない箇所が1点ありましたので、質問させていただくことにしました。 下記formタグにおいて、action要素の#が何を意味しているかがわかりません。 <form action="#"> <input type="button" value="Click Me!!" onclick="window.alert('Hello!!')"> </form> おそらくactionによる送信先の指定を自分(もしくは送信先設定を無効)にしているのかと思いますが、詳しい方、居られましたらご教授いただきたいと思います。 ※w3c勧告の○○ら辺見ればわかるよ的なことも教えていただけると助かります^^; URLは下記です。(イベントハンドラの項) http://www.tohoho-web.com/js/write.htm

    • ベストアンサー
    • HTML
  • includeアクションのflush属性について

    質問があります。 現在JSP/サーブレットを学習中なのですが、どうしてもわからないことがあります。それは、includeアクションのflush属性についてなのですが、flush属性にtrueやfalseのどちらを設定しても、結果画面にその違いが反映されていなくてflush属性の役割が理解できません。まずは、 以下のサンプルをご覧ください。 ----------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>include_action.jsp</title> </head> <body> <p>表示1</p> <jsp:include page="/morej/foo.jsp" flush="true"/> <p>表示2</p> </body> </html> ----------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>foo.jsp</title> </head> <body> <p>こんにちは</p> </body> </html> ------------------------------------------------------------ 参考書には、flush属性は「インクルード前にレスポンスバッファを クリアするかどうかの指定。trueを指定した場合はクリアする。」 と記述されています。上記のサンプルの結果画面は -------------------------------------------------- 表示1 こんにちは 表示2 -------------------------------------------------- と表示されます。flush属性をtrueに設定すると、 インクルード前に出力バッファをクリアすると記述されているので、 「表示1」が表示されないことを期待したのですが、表示されてしまいます。もしかしたら、自分の認識が間違っているかもしれないので どなたか、flush属性の使い方を教えていただけませんでしょうか。 現在の環境は、windows vista home、jdk1.6.0_11、jre1.6.0、 Apache Tomcat/6.0.14、Eclipse Version: 3.4.1です。では、 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう