WebWork(struts2)でのパラメータの取得について

このQ&Aのポイント
  • WebWork(struts2)でのパラメータの取得方法についての質問
  • Action部がすっきりしましたが、requestのパラメータの取得が分かりません
  • 'XXX.action?id=YYY'のようにURLからパラメータを取得したい
回答を見る
  • ベストアンサー

WebWork(struts2)でのパラメータの取得について

こんにちは。 環境:Webwork & Velocity(xwork2) & Tomcat5.5 & JDK 1.6 Action部がだいぶすっきりしましたが、requestのパラメータの取得が分かりません。 一般的なActionSupportを継承しているのですが、thisからHTTPRequestらしきGetterもありませんし・・。 やろうとしている事は'XXX.action?id=YYY'のように、URLからパラメータをgetしたいのですが。 ■JavaScript var url = "XXX.action?id=test"; ※Ajaxでリクエストしてますが省略します。 ■XML <action name="XXX" class="aaa.XXXAction">  <result name="menu" type="plainText">   /WEB-INF/classes/aaa/menu.html  </result>  <result name="test" type="plainText">   /WEB-INF/classes/aaa/test.html  </result> </action> ■Action public class XXXAction extends ActionSupport {  public String execute() throws Exception {   return SUCCESS; //←ここでURLにくっついたパラメータを返したい お分かりになりましたら、よろしくお願いします。

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

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

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

チュートリアルを読んでみたところ。 ActionSupportを継承した、XXXActionをBeansにしておくと、 プロパティにセットされるみたいですよ。 間違っていたら、ごめんなさい。

bobo39
質問者

お礼

ありがとうございます。 どうもxmlがstruts1と比べて大分変わってしまった為、こちらの記述が間違ってると思いましたが、おっしゃるとおりでした。 Action内にパラメータのgettersetterを記述したら、取得できました! 特にHTTPRequestから取得しなくても良かったです。(継承元やってるのかも・・) 上の場合、getId()setId(str)ですね。 ありがとうございました。

関連するQ&A

  • Struts2のValidation後のパラメータ

    Struts2のValidation機能を利用して入力チェックを行っているのですが、 入力画面表示時にGETパラメータを使用している場合、バリデーションエラーでINPUT画面に戻った際にGETパラメータが消えてしまいます。 Struts2: 2.3.15を使用しています 入力画面(index.jsp)は"simple/index.action?id=aa"のようにURLにGETでIDを指定する形式で表示します。(画面上に「ID:aa」が表示されます) 次にタイトル未入力のまま「確認」ボタンを押すとValidationが実行されてエラーメッセージとともに入力画面に戻ってくるのですが、「ID:」と表示され、Actionクラス(Index.java)のidが未設定の状態になります。 Validationエラー後もidがセットされ「ID:aa」が表示されるようにするにはどうすれば良いのでしょうか? Struts2 を触り始めて間もないですので質問自体が的外れかもしれません・・・ 何かアドバイスをいただけたら幸いです。 よろしくお願いいたします。 サンプルコードを以下に示します。 [struts.xml] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="simple" extends="struts-default"> <action name="index" method="index" class="simple.action.Index"> <result name="success">/index.jsp</result> </action> <action name="confirm" method="confirm" class="simple.action.Index"> <result name="success">/confirm.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts> [Index.java] package simple.action; import com.opensymphony.xwork2.ActionSupport; public class Index extends ActionSupport{ private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } public String index(){ return SUCCESS; } public String confirm(){ return SUCCESS; } } [Index-confirm-validation.xml] <?xml version="1.0" encoding="UTF-8"?> <!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="title"> <field-validator type="requiredstring"> <message>タイトルを入力してください</message> </field-validator> </field> </validators> [index.jsp] <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> <!DOCTYPE html> <html> <body> ID:<s:property value="id" /> <s:form action="confirm"> <s:textfield name="title" label="タイトル" ></s:textfield> <s:submit value="確認"></s:submit> </s:form> </body> </html>

    • ベストアンサー
    • Java
  • パラメータのやりとり

    3つのクラスの中でHTML上から取得したパラメータをやり取りしたいと思っています。 1つ目のクラス(CLASS_1.java) public class CLASS_1 extends CLASS_0 { public void doMain(HttpServletRequest request,HttpServletResponse response){ try{ String[] str = makeItem(request); CLASS_2 class_2 = new CLASS_2(); class_2.setItem(str); private String[] makeItem(HttpServletRequest request){ String[] result = new String[3]; result[0] = request.getParameter("test1"); result[1] = request.getParameter("test2"); result[2] = request.getParameter("test3"); return result; 2つ目のクラス(CLASS_3.Java) public class CLASS_3{ public void setItem(String[] data){ } public boolean makeTEXT(){ return true; } public ByteArrayOutputStream getTEXT(){ return null; } } 3つ目のクラス(CLASS_2) public class CLASS_2 extends CLASS_3 { public boolean makeTEXT(){ return true; } } という3つのクラスを作成しました。 CLASS_1で取得したstrの中の値をCLASS_2で使用したいと考えています。 ただ羅列するだけでかまいませんので、わかるかたヒントや参考になりそうなHPなどありましたら よろしくお願いします。

  • formによるパラメータ送信がうまくいきません

    こんばんは。 HTML初心者です。 formによるパラメータを送信しようと考えているのですが、 送信方法によってパラメータが異なってしまい、困っています・・・。 以下のようなformを使って、パラメータをpostしています。 <form name="form1" action="http://xxx/xxx/xxx" method="post"> <input type="text" name="text1"> <input type="submit" value="sousin" name="submit1"> </form> 送信してみたところ、送信方法によって、送るパラメータに差異があることに気が付きました。 ************************************************** 1.テキストに文字列を入れて、送信ボタン(sousin)を押す。 ->リクエストパラメータが、submit1=sousin と text1=文字列 になる。 2.テキストに文字を入れて、フォーカスがテキストにある状態で、Enterを押す。 -> リクエストパラメータが、text1=文字列 だけになる。 ************************************************** 1.と2.どちらの場合でも、 submit1=sousin と text1=文字列 を送りたいと考えています。 クエリストリングは使いたくないので、 onclickをつけてみたり、JavaScriptで少し考えてみましたが、 どうしてもうまくいきませんでした・・・。 2.のように、Enterを押したときでも、 submit1=sousinを送るようにするのはどうしたらよいでしょうか?? 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • formヘルパーを使わないと、パラメータを取得できないのでしょうか?

    symfonyを使用してますが、 formヘルパーを使わないと、リクエストのパラメータを取得できないのでしょうか? --------------------------------------------------- <form action="/web/xx.php/xx/xxx" enctype="text/plain" method="post"> <input type="text" name="model" value="50"> <input type="submit" value="検索"> </form> --------------------------------------------------- 上記だと、パラメータを取得できるが、下記だと取得できる。 --------------------------------------------------- <?php echo form_tag('/web/xx.php/xx/xxx') ?> <?php echo input_tag("model","50") ?> <?php echo submit_tag('検索')?>

    • 締切済み
    • PHP
  • strutsに関連したxmlのサーブレットマッピング

    失礼致します。 初歩的なことですが質問させてください。 strutsにおけるxmlファイルの記述例は次のようになります。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ここで、新しいサーブレット(download)を追加しようと次のように記述を加えました。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <servlet-name>download</servlet-name> <servlet-class>Download</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-patte <servlet-name>download</servlet-name> <url-pattern>/download</url-pattern>rn> </servlet-mapping> すると、入り口のファイルに対し、「The requested resource (/プロジェクト名/ファイル名.jsp) is not available.」と警告されました。 strutsではサーブレットの追加は出来ないのでしょうか?ご指摘お願いします。

    • ベストアンサー
    • Java
  • strutsで画面遷移

    お世話になります。struts初心者です。 test1.jspから、リンクをクリックしたら、次のページ(download.jsp)へ遷移させたいのですが、「ページが見つかりません」となってしまいます。 以下のようなソースコードにしています。 どこがおかしいのでしょうか・・・・情報少ないでしょうか。わかる方いらっしゃいましたら、おしえてください。 https://xxxxx/test/test1.jsp  ↓リンククリックで下記URLになり「ページが見つかりません」 https://xxxxx/login/menu.do ------------------------------------------------------- test1.jsp ------------------------------------------------------- <html:html> <head> <script language="JavaScript"> <!-- function gonext(){ document.menuForm.menuOperation.value ="download"; document.menuForm.submit(); } --> </script> </head> <body> <html:form action="/login/menu"> <html:hidden property="menuOperation"/> <A href="javascript:gonext()"> go next </A> </html:form> </body> </html:html> ------------------------------------------------------- struts-config.xml ------------------------------------------------------- <form-beans> <form-bean name="menuForm" type="xxx.login.CMenuActionForm"/> </form-beans> <action-mappings> <action path="/login/menu" type="xxx.login.CMenuAction" name="menuForm" scope="request"> <forward name="download" path="/common/download.jsp"/> </action> </action-mappings> ------------------------------------------------------- CMenuAction.java ------------------------------------------------------- public class CMenuAction extends CxxxDLAction{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { return mapping.findForward("download"); } } ------------------------------------------------------- CMenuActionForm.java ------------------------------------------------------- public class CMenuActionForm extends ActionForm{ String menuOperation; public String getmenuOperation() { return menuOperation; } public void setmenuOperation(String menuOperation) { this.menuOperation = menuOperation; } }

  • struts2のchainで値の受け渡しができない

    Java 6 Update 22 struts2.2.1 です。 次のとおり各クラスとstruts.xmlを作成しました。 Top_guestLoginアクションを実行してHelloUserクラスに遷移することはできましたが、変数isGuestModeの値が受け渡しされません。 public class Top implements SessionAware { private boolean isGuestMode = false; public boolean getIsGestMode() { return isGuestMode; } public String guestLogin() throws Exception { isGuestMode = true; return "success"; } } public class HelloUser { private boolean isGuestMode; public boolean getIsGuestMode() { return isGuestMode; } public void setIsGestMode(boolean b){ isGuestMode = b; } public String execute() throws Exception { return "success" ; } } struts.xml <package name="example" extends="struts-default"> <action name="HelloUser" class="example.HelloUser"> <result>/example/HelloUser.jsp</result> </action> <action name="Top_guestLogin" method="guestLogin" class="example.Top" > <result name="success" type="chain" >HelloUser</result> </action> </package> 何方かアドバイスをお願い致します。

    • ベストアンサー
    • Java
  • strutsの加算処理

    私はstruts、java初心者です! 今回strutsを利用して簡易電卓のwebアプリケーションを作ろうと思ったのですが、なかなか難しくいろいろなサイトからサンプル等をさがしてみました。 その結果下記のサイトの足し算を行うwebアプリケーションのサンプルがあったのでその通りに作成してみたのですが、コンパイルで失敗してしまい、原因が分からないので投稿しました!! ↓参考ページ http://www.aiosl-tec.co.jp/java-start/chap13.html 開発環境は ・Java2SDK,Standard Edition 1.4.1_02 ・Apache Tomcat 4.1.24 ・Struts 1.1 ・Apache Ant 1.5.3 ・Eclipse 3.0 です。 コンパイル時のエラーは Buildfile: D:\works\workspace\struts-test\WEB-INF\src\build.xml clean:[delete] Deleting directory D:\works\workspace\struts-test\WEB-INF\classes [mkdir] Created dir: D:\works\workspace\struts-test\WEB-INF\classes prepare: resources:[copy] Copying 1 file to D:\works\workspace\struts-test\WEB-INF\classes compile:[javac] Compiling 2 source files to D:\works\workspace\struts-test\WEB-INF\classes [javac] D:\works\workspace\struts-test\WEB-INF\src\struts\TestAction.java:9: java.lang.Object にアクセスできません。 [javac] クラスファイル C:\Program Files\Java\jre1.6.0_07\lib\rt.jar(java/lang/Object.class) は不正です。 [javac] クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。 [javac] 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 [javac] public final class TestAction extends Action { [javac] ^ [javac] エラー 1 個 BUILD FAILED: D:\works\workspace\struts-test\WEB-INF\src\build.xml:56: Compile failed; see the compiler error output for details. Total time: 2 seconds です。(どの部分がエラーか分からなかったのでコンパイル時に表示されるものを全て載せさせてもらいました) とても長くてすみません。 すごく困っているので回答よろしくお願いします。

  • Strutsのtaglibについて

    Strutsを最近学習し始めた超初心者ですが... taglibを使えるようにするweb.xmlの設定なんですが。 なぜかエラーが出てしまいます。 環境はeclipse3.1.1 Struts1.2.9 apache-tomcat-5.5.25です。 web.xmlの記述は以下の通りです。 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <display-name> test01</display-name> <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>filters.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location> </taglib> </web-app> <taglib>のところにエラーの×が出てしまうのですが。 何か間違ってますか?? とても困ってますので是非、わかる人お願いします!!

    • ベストアンサー
    • Java
  • 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