- ベストアンサー
iterateで受け取った値を処理に使いたい
こんにちは、honiyonです。 まだ知識が浅い為、おかしな言い回しがあるかも知れませんがご容赦くださいm(_ _)m Servlet側で作成したデータをJSP側で <logic:iterate id="LOOP" name="LOOP_LIST" indexId="index"> <bean:write name="LOOP" property="data1"/> <bean:write name="LOOP" property="data2"/> </logic:iterate> のようにして表示する方法はわかりました。 今度は、これを表示するのではなくて処理に使いたいのですが、その方法がわからず難儀しています。 こんな書き方は出来ないのですが、こういう事がやりたいと思っています。 <logic:iterate id="LOOP" name="LOOP_LIST" indexId="index"> <!---こっちは普通に表示---> <bean:write name="LOOP" property="data1"/> <!---data2は処理に使う---> <% ↓↓ここの書き方がわからない↓↓ String CODE= "<bean:write name="LOOP" property="data2"/>" if (CODE == "1") { out.println("牛"); } else { out.println("馬"); } %> </logic:iterate> よろしくお願いします(..
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1の方のtypoを補いつつ、 <logic:equal name="LOOP" property="data2" value="1"> 牛 </logic:equal> <logic:notEqual name="LOOP" property="data2" value="1"> 馬 </logic:notEqual> ですね。これですむなら、この方法を採用すべきです。 「本当は牛馬ではなく、実はもっと複雑で」というのであれば、form-beanのpropertyを通じて表示データを取得できるように、あらかじめ仕込んでおく手法もあります。 「どうしてもスクリプトレットで」となると、logic:iterate の処理とは全く無関係に、自身でform-beanからデータを引っ張ってくることになるかと思います。背景を適当に想像で補って全体を記せば、例えば以下のようなコードです。 どこか倒錯した感がありますね。だから、この方法は使うべきではありません。 <%@ page import="myproject.ListForm" %> <%@ page import="myproject.ItemForm" %> <html:form action="/myproject/listAction"> <bean:define id="LOOP_LIST" name="listForm" property="list"/> <logic:iterate id="LOOP" name="LOOP_LIST" indexId="index"> <bean:write name="LOOP" property="data1"/> <%! int index = 0; %> <% ListForm list = (ListForm) request.getAttribute("listForm"); ItemForm item = (ItemForm) list.getList().get(index++); String code = item.getData2(); out.println(code.eqauls("1") ? "牛": "馬"); %> <hr/> </logic:iterate> ※ String の同値Checkには、equals() を使います。
その他の回答 (1)
- chuckcavaness
- ベストアンサー率53% (7/13)
logicタグを使ってはいかがでしょうか? <logic:equal name="LOOP" property="data2" value="1"> <bean:write name="LOOP" property="data2"/> </logic:equal> ほかにもlogicタグには便利なものがあるので調べてみては。 あとJSTLを用いる手もあるので検索してみて下さい。
お礼
こんにちは、honiyonです。 素早くご回答頂いていたにもかかわらず、 お礼が遅くなり申し訳ありません。 なるほど、beanタグのマニュアルを読んだ時にこの辺りサッパリだったのですが、おかげで謎が解けました。 このように使うことが出来るのですね。 タグだけで判断処理が出来るとは便利です。 改めてマニュアルを読み返しましたが、私のしたい事には不足するようです。 これだけで実現出来ればスッキリするだけに残念です。 大変参考になりました。 有難うございました。
お礼
こんにちは、honiyonです。 お礼が大変遅くなり申し訳ありません。 なるほど、確かに倒錯感がありますね...。 しかしどうしてもやりたいとなると、こうなってしまうのですね。 今回は処理をServlet側に組み込んでしまうことにしました。 タグの生成をServlet側で行う、というのも私なりに気に入らない手法ではあったのですが。 詳しいご説明、有難うございましたm(_ _)m