プロが教える店舗&オフィスのセキュリティ対策術

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

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>


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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

<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

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A