こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

strutsを使用したjspでjavascript関数へ引数を渡す方法

ご存知の方がおられましたら、教えてください。

struts1.2を使用したJSPで、ボタン押下時にjavascriptの関数に
strutsの変数を渡したいのですが、呼ばれないようです。
固定の値を渡すと、きちんと呼ばれます。
下記に例を示します。

<html:html locale="true">

<script type="text/javascript">

function PointAdd(index)
{

alert('aaa');

}
</script>

<body>

<logic:iterate id="gal" name="gals" type="model.Gal" offset="<%=(String)request.getAttribute("offset") %>" length="10" >

<bean:define id="gal_no1" >
 <bean:write name="gal" property="gal_no" />
</bean:define>

<html:button property="noReAction" value="ポイントUP" onclick="PointAdd(<%= gal_no1 %>)" />

</logic:iterate>

</body>
</html:html>


ご存知の方、おられましたら、
ご指導、よろしくお願いいたします。

投稿日時 - 2008-07-14 20:33:12

QNo.4176639

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

まず、「gals」がコレクション型なのか「gal_no」がコレクションなのかで操作が変わってきます。
もし「gals」がコレクションなら

><bean:define id="gal_no1" >
> <bean:write name="gal" property="gal_no" />
></bean:define>

この部分を

(1) <bean:define id="gal_no1" value="gal" />

とするだけでいいです。<bean:define>タグはvalue属性がある場合String型、ない場合はObject型となるようなのでボディ部を使う際は
タグの属性に「type="java.lang.String"」を追加してください

もし「gal_no」がコレクションなら<logic:iterate>タグの属性に「property="gal_no"」を追加して(1)と同じようにすればうまくいくと思います。

それでもうまくいかない場合は、<logic:iterate>タグのtype属性かoffset属性に問題があると思います。
type属性は省略しても使えるので、まずは省略してみてください。
省略してうまくいかなかったら、「model.Gal」がコレクションを継承したクラスなら問題ないですが、そうでないなら「gals」(もしくは「gal_no」)のクラス(java.util.ArrayList)などを指定してみてください。
あと、offset属性ですが、これはindexId属性を使う際に、その初期値(数値)を決めるので文字列は指定できないと思います。

タグについて詳しく書いてあるサイトのURLを張っておきます。
Strutsは覚えること多いですが、慣れると非常に便利なので頑張ってください。

参考URL:http://tag.main.jp/index.html

投稿日時 - 2008-07-15 07:36:58

お礼

回答ありがとうございました。
下記のような形で、対応できました。

<bean:define id="gal_no" >
<bean:write name="gal" property="gal_no" />
</bean:define>

<div class="itemTextPAdd">

<html:button property="noReAction" value="ポイントUP" onclick='<%= "PointAdd(" + gal_no + ")" %>' />
</div>

投稿日時 - 2008-07-23 23:28:40

あなたにオススメの質問