• ベストアンサー

struts bean:defineについて

現在struts + weblogicでwebアプリの開発を行っています。 行いことは以下のようになっています。 <table> <html:form action"/hoge"> <logic:iterate id="lst" name="hoge" indexId="idx"> <bean:define id="listIndex" name="idx"/> <tr name='<bean:write name="idx"/>'> <td> <html:select name="lst" property="timeH" onclick="document.hogeForm.hdn.value='<%=listIndex%>'> <html:options property="timeHList"/> </html:select>    ・・・中略・・・ <input type="hidden" name="hdn"> </html:form> ここで問題になっているのが、onclickイベントでhiddenに値を入れようと思っているのですが、<%=listIndex%>がそのまま文字列になって返ってきます。 シングルコーテーションを外したらスクリプトエラー、 ダブルコーテーションで書いたら<html:select>のタグが閉じてないといわれ、エラーで落ちます。 どのように値を格納すれば正しくhdnに値を格納できるのでしょうか? struts 1.1 Weblogic 8.1 SP1 Windows2000にて開発 以上、宜しくお願い致します。

  • Java
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
回答No.2

これが解決にはならないと思いますが… <html:select name="lst" property="timeH" onclick="document.hogeForm.hdn.value='<%=listIndex%>'> のonclick属性のダブルクォーテーションがちゃんと閉じられていないと思うのですが…これじゃダメでしょうか。 <html:select name="lst" property="timeH" onclick="document.hogeForm.hdn.value=<% =listIndex%>"> それと、<select>にイベント付けるなら、普通はonchangeでは…? <select>の内容をhiddenに渡したい訳ではないなら、他の方法を考える事をオススメします。 具体的に何がしたいのかわかれば、この私程度でも少しはお役に立てるアドバイスができそうですが、いかがでしょう。

その他の回答 (2)

  • lawson
  • ベストアンサー率44% (29/65)
回答No.3

あっ onchange でしたっけ。 じゃ、No1のonclickの部分をonchangeに 読み替えてください。

  • lawson
  • ベストアンサー率44% (29/65)
回答No.1

上記の↑のエラーの理由はよくわかりませんが。 やりたいことは、実行時にselectメニューで 選択項目を変更するたびにをhiddenの 値を変えたいということでしょうか? だと、すれば、いづれにせよ。 上記のやり方では、うまくいかないように 私には見えるのですが・・・。 上記のやり方では、 サーバーサイドでJSPを実行した時の jsp側の変数listIndexの値が文字列に展開された 識別子について、javascriptが解釈した値を 選択メニューの値が変えられるたびに document.hogeForm.hdn.valueに 代入している。 ということになります。 つまり、 選択メニューでなにを選ぼうが、 document.hogeForm.hdn.valueには 常に同じ値が代入されることになって しまうのではないでしょうか? これって、utataneのやりたいことなのでしょうか? utataneがしたいのはこういうことなのではないでしょうか? <html:select name="lst" property="timeH" onclick="document.hogeForm.hdn.value=document.hogeForm.timeH.options.selectedIndex"> もしくは、 <html:select name="lst" property="timeH" onclick="document.hogeForm.hdn.value= document.hogeForm.timeH.options[document.hogeForm.timeH.options.selectedIndex].value"> こうすれば、クライアント側のjavascriptの機能で 選択メニューの値を変更する度に、 その時、選択メニューで選ばれている内容に対応する 値がhiddenタグにはいると思いますが。 私の勘違いなのかなぁ。 なお、 質問文のエラーの回避方に関しては、 ちょっと、よくわかりません。 以上

関連するQ&A

  • 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をより理解したいため、お分かりになる方教えていただけないでしょうか?よろしくお願いします。

  • プルダウンを選択していないときは、初期値(selected)の値を、選

    プルダウンを選択していないときは、初期値(selected)の値を、選択したときは選択値を、hiddenで渡したい。 ▽プルダウン例 <form> <select> <option value="0" selected>A</option> <option value="4">B</option> <option value="6">C</option> </select> </form> ↑上で選択した値(A or B or C)値を、↓下のvalue=「"hoge"」に渡したいです。 ※選択肢は3つだけではなくて、たくさんあります。 ▽input例 <input name="category_name" value="hoge" type="hidden"> ※formとかselectにid振っても構いません。 ※javascriptでやりたいです。

  • 【Struts】html:linkについて

    「html:link」でActionFormに値を格納するというような、 「html:form」的な動きはできるでしょうか。 「html:link action="/hoge?id=xxx&param=<% ooo %>&..."」 今は上記のような形で、値を固定したり変数に入れたりして requestで次画面へ値を飛ばすようにしていますが、 「html:text」など値が動的になってくると「?」では 厳しくなります。 動的な値を次画面へ飛ばせればどんな方法でも良いのですが、 できればformに格納したいのでなにか方法はないでしょうか? やはりJavaScriptでsubmitさせる感じになってしまうのでしょうか?

    • ベストアンサー
    • HTML
  • Java struts プルダウン

    JAVAでプルダウンを作成しています。 しかしプルダウンの値を設定し、submitを掛けると全ての行のプルダウンの値が同じになってしまいます。 100円 200円 でsubmitを掛けると 200円 200円 になってしまう。 <logic:iterate id="element" name="ActionForm" property="GridList" indexId="idx"> <html:select name="ActionForm" property="selectData" style="margin-left:10px;"> <html:optionsCollection name="element" property="DropDownList" label="label" value="value" /> </html:select> </logic:iterate> selectDataはStringの配列です。 DropDownListにはlabelとvalueのプロパティを持ったBeanを格納しています。 selectDataには「100-150-1日」というハイフン区切りのデータが格納されます。 どこが問題かわかりませんでしょうか。

    • ベストアンサー
    • Java
  • strutsでlist型の入力を行うには

    strutsでlist型の入力を行いたいのですが、サーバー側で上手く取得できません。 実際には struts-configに <form-bean name="TestForm" type="base.BaseActionForm"> <form-property name="testList" type="java.util.List" /> </form-bean> JSPには <logic:iterate id="testList" type="bean.TestBean" name="TestForm" property="testList" indexId="idx"> <tr> <td> <html:text property="strKamoku" name="testList"/> </td> </tr> </logic:iterate> beanは下記のようです。 public class TestBean implements Serializable, Cloneable { private String strKamoku; public String getStrKamoku() { return strKamoku; } public void setStrKamoku(String strKamoku) { this.strKamoku = strKamoku; } } 上記のように設定し、サーバー上でセットした値をテキストボックスに 入れてlist表示できたのですが、テキストボックスに入れた値を変更し、submitし、サーバー上でlistの中を見てみると、表示した時のままで変更した値が反映されてません。 表示したlistの値を変更する事はできるのでしょうか。 わかりづらい説明ですいませんが、なにかアドバイス宜しくお願いします。

    • ベストアンサー
    • Java
  • strutsでコンパイラ

    strutsでコンパイラができません struts-confing <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="Update" type="action.form.Update"/> <form-bean name="kensaku2" type="action.form.kensaku2"/> </form-beans> <!-- アクションの定義 --> <action-mappings> <!-- Form情報をUpdateとして、action.AccountFormクラスをアクションとして指定する --> <!-- Form情報はリクエストスコープに格納される --> <action name="HelloWorldForm" type="action.AccountForm" path="/Update" scope="request" > <!-- アクションの遷移先として論理名をhello ファイルパスを/webJSP/index.jspとする --> <forward name="Update" path="/webJSP/index.jsp" /> </action> </action-mappings> <message-resources parameter="ApplicationResource" /> </struts-config> index.jsp <%@page contentType = "text/html; charset=Shift_JIS"%> <%@page import= "java.util.List,websample.Account"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <html:html> <head> <title>一覧画面</title> </head> <body> <!-- HTMLのFROMタグに変換される --> <html:form method="POST" action="tuika1" target="_blank "> <div><font size="6" ><strong>顧客一覧画面</strong></font></div> <input type="submit" value="追加" name="insert"> </html:form> <form method="POST" action="kousin11" target="_blank "> <input type="submit" value="更新" name="update"> </html:form> <script type="text/javascript"> <!-- function disp(){ // 「OK」時の処理開始 + 確認ダイアログの表示 if(window.confirm('削除しますか')){ location.href = "index.jsp"; // index.jsp へジャンプ } // 「OK」時の処理終了 // 「キャンセル」時の処理開始 else{ window.alert('キャンセルされました'); // 警告ダイアログを表示 } // 「キャンセル」時の処理終了 } // --> </script> <html:form method="POST" action="Update"> <input type="submit" value="削除" name="delete" onClick="disp()"></p> <table border="1"> <tr> <TH>コード <TH>名称 <TH>住所 <TH>電話 <TH>メール <% List list = (List)request.getAttribute("list"); for(int i=0; i<list.size(); i++){ Account account = (Account)list.get(i); %> <tr> <td><%=account.getid()%> <td><%=account.getname()%> <td><%=account.getaddress()%> <td><%=account.getdenwa()%> <td><%=account.getmail()%> <td><input type="radio" name="radio" value="<%=account.getid()%>" > <% } %> </table> </html:form> </body> </html:html>

  • StrutsでJSPからListを受け取りたい

    JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。 尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。 ~~~JSP~~~ <input type="hidden" name="str1" value="a"/> <input type="hidden" name="str2" value="b"/> <input type="hidden" name="str3" value="c"/> ~~~~~~~~ 上のJSPから下記のFORMに詰めたい ~~~form~~~ private List strList; public List getStrList(){ return strList; } ~~~~~~~~ 又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。 よろしくお願い致します。 ~~~JSP~~~ <input type="hidden" name="testArray[0].str" value="a"/> <input type="hidden" name="testArray[1].str" value="b"/> <input type="hidden" name="testArray[2].str" value="c"/> ~~~~~~~ ~~~FORM~~~ private List list; public TestBean getTestA(int iIndex) { while (this.list.size() <= iIndex) { this.list.add(new TestBean ()); } return ( TestBean ) this.list.get(iIndex); } public Object[] getTestArray() { return list.toArray(); } public static class TestBean { private String str = ""; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }

    • ベストアンサー
    • Java
  • <input>の選択肢をプルダウンメニューから受け取り、hiddenで

    <input>の選択肢をプルダウンメニューから受け取り、hiddenで渡したいのですが、どうすればよいでしょうか? ▽プルダウン例 <FORM> <SELECT> <OPTION SELECTED>SELECT</OPTION> <OPTION VALUE="1">A</OPTION> <OPTION VALUE="2">B</OPTION> <OPTION VALUE="3">C</OPTION> </SELECT> </FORM> ↑上で選択した値(A or B or C)値を、↓下のvalue=「"hoge"」に渡したいです。 ※選択肢は3つだけではなくて、たくさんあります。 ▽input例 <input name="hosted_button_id" value="hoge" type="hidden"> http://okwave.jp/qa/q6016233.htmlの質問内容が知りたいことに近かったのですが、value値ではなくて、選択した内容そのものをhiddenへ渡す方法を教えてください。

  • strutsプログラミングでの疑問

    strutsプログラムをしているところで質問です。 javascriptでbuttonを押すことで、actionを走らせるコーディングをご存知の方がおられましたら教えて頂けないでしょうか。 以下にコーディングとエラーメッセージを載せておきます。 コーディング <script language="JavaScript"> function jump{ document.MainForm.action="StrutsSample.do"; document.MainForm.submit(); } </Script> <form method="post" action="#" name="MainForm"> <input type="button" value="追加" onclick="jump()"> </form> エラーメッセージ HTTPステータス 500 javax.servlet.ServletException: Cannot find bean under name org.apache.struts.taglib.html.BEAN

  • テキストボックスで入力したデータを変数に入れてリンクで飛ばせる?

    Struts + JSPで DynaValidatorFormに格納した値を <html:text property="id" size="10" maxlength="8" /> <html:text property="name" size="80" maxlength="50" /> こんな感じでhtml:textとかで取り出すと思いますが、 次画面に遷移する際、html:textにユーザーが入力した値を 変数に入れる方法ってないでしょうか? リンクで画面遷移するときに値をもたせたいので html:formではなく くhtml:link action="/hoge?<% id %>&<% name %>..." /> こんな感じでやりたいのです。 良い方法はあるでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう