dポイントプレゼントキャンペーン実施中!

こんにちは、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>


 よろしくお願いします(..

A 回答 (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() を使います。
    • good
    • 0
この回答へのお礼

こんにちは、honiyonです。

  お礼が大変遅くなり申し訳ありません。

 
  なるほど、確かに倒錯感がありますね...。
  しかしどうしてもやりたいとなると、こうなってしまうのですね。

  今回は処理をServlet側に組み込んでしまうことにしました。
  タグの生成をServlet側で行う、というのも私なりに気に入らない手法ではあったのですが。

  詳しいご説明、有難うございましたm(_ _)m

お礼日時:2006/01/19 05:01

logicタグを使ってはいかがでしょうか?



<logic:equal name="LOOP" property="data2" value="1">
 <bean:write name="LOOP" property="data2"/>
</logic:equal>

ほかにもlogicタグには便利なものがあるので調べてみては。
あとJSTLを用いる手もあるので検索してみて下さい。
    • good
    • 0
この回答へのお礼

こんにちは、honiyonです。

  素早くご回答頂いていたにもかかわらず、
  お礼が遅くなり申し訳ありません。

  
  なるほど、beanタグのマニュアルを読んだ時にこの辺りサッパリだったのですが、おかげで謎が解けました。
  このように使うことが出来るのですね。
  タグだけで判断処理が出来るとは便利です。

  改めてマニュアルを読み返しましたが、私のしたい事には不足するようです。
  これだけで実現出来ればスッキリするだけに残念です。

  大変参考になりました。
  有難うございました。

お礼日時:2006/01/19 05:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!