【Struts】bean:writeタグのpropertyの設定値を動的に変更する方法

このQ&Aのポイント
  • bean:writeタグのpropertyの設定値を動的に変更したいと思っています。下記の方法を試してみましたが、エラーが発生してしまいます。
  • 方法1では<%=i%>で設定し、方法2では変数を使って設定しましたが、どちらもうまくいかずに行き詰まっています。
  • 解決策を教えていただけるとありがたいです。宜しくお願い致します。
回答を見る
  • ベストアンサー

【Struts】bean:writeタグのpropertyの設定値を動的に変更

こんばんは。 bean:writeタグのpropertyの設定値を動的に変更したいと思っております。 <td width="200px;" nowrap><bean:write name="list" property="f_subJoining[1]"/></td> ※下記の『f_subJoining[1]』の1の値をの可変にしたいのです。 下記方法で試してみたのですが、上手くいかずに行き詰っております。 ------------------------------------- 【1】の部分を<%=i%>で設定。 <bean:write name="list" property="f_subJoining[<%=i%>]"/> ------------------------------------- 【2】propertyにそのまま変数を設定 <% String t_name = "f_subJoining[1]" %> <bean:write name="list" property="<%=t_name%>"/> ------------------------------------- ※【1】・【2】ともにエラーになってしまいます。 ご教授いただけたらと思います。 どうぞ、宜しくお願い致します。

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

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

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

1年前の記憶なので、確かではないのですが、 iterationでまわす場合は、変数名だけでは、駄目だった と記憶しております。 <bean:write name="list" property="f_subJoining[<%=i%>]"/> ↓これに変えればいけませんか? <bean:write name='list' property='<%="f_subJoining[" + i +"]"%>' /> iはjspタグでLoopしているものと仮定しています。

funamin
質問者

お礼

上手く行きました!! iterationでまわす場合は、変数名だけでは NGなのですね。 とても勉強になりました。 ありがとう御座いましたm(_ _)m

その他の回答 (1)

noname#45950
noname#45950
回答No.2

>※下記の『f_subJoining[1]』の1の値をの可変にしたいのです。 ええっと、これは、 1.listをiterateしたい 2.決め打ち?!で、listのある要素を指定したい の、どちらでしょうか? 1.であれば、propertyにlistを指定すれば、要素の添え字は要りません。 2.であれば、専用のgetterを用意するのが無難だと思います。 (参考URLは、1.に対してのものです)。

参考URL:
http://www.itmedia.co.jp/enterprise/0311/28/epn02_12.html
funamin
質問者

お礼

実際行おうとしていたのが、listをiterateしつつ、ネストしたリストを読み込む方法です。 (例)ではネストの事は記述しなかったのですが・・。 ご回答ありがとう御座いましたm(_ _)m URLも参考にさせていただきます!!

関連するQ&A

  • java struts で フォームビーンに入っているarrayDB配

    java struts で フォームビーンに入っているarrayDB配列の情報をリストボックスで表示するにはどのようにすればいいのでしょうか? <logic:iterate id="idToname" name="ENTRY" property="arrayDB" > <bean:write name='idToname' property='cmName'/> <option value="<bean:write name='idToname' property='cmbName' />"></option> </logic:iterate> で実行すると文字列が可変長で画面に出てきただけでリストボックスでは表示されませんでした。 リスト内容は可変です。 どうやって配列の内容をリストボックスで表示させればいいのでしょうか? ネットでかなり検索をしましたが、可変の配列をリストボックスで表示する方法はありませんでした。

    • ベストアンサー
    • Java
  • Struts 1.3 でbeanタグが認識されない

    Struts初心者です。 Struts1.3で以下のようなJSPを作成していますが、 "bean:write"のところで、"bean"に対応するtaglibディレクトリが存在しないかTLDファイルが見つかりません。 とエラーになります。 <%@ page contentType="text/html;charset=Windows-31J" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> ・ ・ ・ <html:html> <head> <title>○○○○○○○○</title> </head> <body> <h1>○○○○○○○○</h1> ●●●●<bean:write name="xxxx" property="id" />! </body> </html:html> "html"の方はエラーになりません。 ケアレスミスのような気がしていますので、どなたか教えていただけると嬉しいです。

  • (Struts)Logicタグについて

    bean内にString型配列name[],no[],key[]を取っている状態で、jspページに表を表示しようとおもっております。 <table>  <logic:iterate id="name" name="bean名" property="name">   <tr>    <bean:write name="name"/>   </tr>  </logic:iterate> </table> 上記の方法で一列を表示することはできたのですが、 複数列を表示する方法がよくわかりません。 <logicタグ> <name配列> <no配列> <key配列> </logic> のような形で表示することはできませんでしょうか? すべての列を一つの表にできれば他の方法でもかまいません。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Struts の logic タグの使い方?

    Action でセッションにオブジェクトのリストを登録し、その後、Show.jsp 側でセッションにオブジェクトのリストがある場合は、そのリストを表示するプログラムを作ろうとしています。 実行すると スコープ request にBean ActionFormForSearchResult がありません とエラーになってしまいます。 ActionFormForSearchResult は、オブジェクトのリストを表すオブジェクトで Action が呼び出されたときにセッションに登録します。 jsp の記述は、次のような感じです。 <logic:iterate id="element" name="ActionFormForSearchResult" scope="request"> ><bean:write name="element" property="intCorporationCode" /> </logic:iterate> よろしくお願いします。

    • ベストアンサー
    • Java
  • StrutsのiterateタグでListに格納されているBeanの要素を表示する方法

    タイトルのように Strutsのiterateタグを使用して、 ArrayListに格納されているBeanの要素を表示しようとしています。 具体的には public class Test { // 実際にはmainではないですが。 public static void main( String[] args ) { TestBean tbean = new TestBean( "あいうえお", "10" ); ListBean lbean = new ListBean(); lbean.setList( tbean ); } } public class TestBean { private String name; private String age; public TestBean( String name, String age ) { this.name = name; this.age = age; } } public class ListBean { private ArrayList list; public ListBean(){ } public void setList( TestBean bean ) { this.list.add( bean ); } public ArrayList getList() { return this.list; } } というような構成で、JSPでiterateタグを利用して、 listに入っているBeanから、更にnameとageを取得して 表示させたいのです。 ご回答お願いします。

  • 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
  • struts の iterateでのテーブル表示

    Map型のデータを、iterateを使って表(テーブル)表示を行っているものです。 Map型のデータには、23個のデータが入っています。 このデータを5×5の表に順番に入れて表示させたいのです。現在は1行に同じデータが5つ表示されています。 5×5の表にする方法がいまいちわかりません。 知っている方、宜しくお願いします。 今書いているソースの一部です。 <table border="1"> <logic:iterate id="data" indexId="ctr" name="list"> <tr> <td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> </tr> </logic:iterate> </table>

  • Strutsのbean:writeにclassを適用したい

    元々以下のような部品をカスタムタグ化したいです。 <input type="text" class="info" size="8"/> <bean:write name="InputForm" property="customerID" class="info"/> とやるとエラーになります。 class="info"の部分を削除するとエラーはなくなります。 どうしたらclass=""の部分を適用できるでしょうか

    • ベストアンサー
    • Java
  • java strutsでの一覧表の表示方法について

    以下の内容でロジックを組んだのですが、 jspより表示される一覧表は、003 name3が3件表示されてしまいます。 一覧表を正しく表示できない原因を教えてください。 SP0010_FORM_Bean.java public class SP0010_FORM_Bean { protected String id; protected String name; public void setId(String s) { id = s; } public String getId() { return id; } public void setName(String s) { name = s; } public String getName() { return name; } } SP0010_FORM.java public class SP0010_FORM extends ValidatorForm{ protected List<SP0010_FORM_Bean> loopList; public void setLoopList(List<SP0010_FORM_Bean> list) { loopList = list; } public List<SP0010_FORM_Bean> getLoopList() { return loopList; } } SP0010_ACTION_10.java SP0010_FORM initBean = new SP0010_FORM(); request.setAttribute("list_form", initBean); List<SP0010_FORM_Bean> list = new ArrayList<SP0010_FORM_Bean>(); SP0010_FORM_Bean bean1 = new SP0010_FORM_Bean(); bean1.setId("001"); bean1.setName("name1"); list.add(bean1); bean1.setId("002"); bean1.setName("name2"); list.add(bean1); bean1.setId("003"); bean1.setName("name3"); list.add(bean1); initBean.setLoopList(list); jsp <table border="1"> <logic:iterate id="loop" name="list_form" property="loopList"> <tr> <td><bean:write name="loop" property="id" /></td> <td><bean:write name="loop" property="name" /></td> </tr> </logic:iterate> </table>

    • ベストアンサー
    • Java
  • struts で bean:parameter の指定方法でつまづいています

    いつもお世話になっております。 DBから取得したデータをiterateを使用してボタン表示を行い、ボタンを押されたときのデータを取得しようとしているのですが、 なんともうまくいきません。 1つ前のjavaで、 request.setAttribute("category",cmArray); として定義してあります。 cmArrayはmodelをArrayListに入れたものです。 実際のソースは <logic:iterate id="hyouji" name="category" scope="request"> <html:submit property="submit"><bean:write name="hyouji" property="category_name" /></html:submit> <bean:write name='hyouji' property='category' /> <--デバック用で期待した値がでます。 <bean:write name='hyouji' property='category_sub' /> <--デバック用で期待した値がでます。 <bean:parameter id="strCategory" name="hyouji.category" value="no-name" /> <bean:parameter id="strCategory_sub" name="category_sub" value="no-name2" /> <% System.out.println(strCategory); System.out.println(strCategory_sub); %> </logic:iterate> bean:parameterのnameの所を色々変えて試しているのですが、printlnの所ではvalueに指定した文字が 出てしまう状態です。 タグライブラリを使用せずに、スクリプトレットを使用すれば出来るようになった(OKWaveで解決)のですが、 できればタグライブラリで出来たらと思います。 どなたか分かる方がいましたら、ご教授下さい。

専門家に質問してみよう