- PR -

Strutsのhtml:textタグ内でJavaScriput関数を呼び出す場合

1
投稿者投稿内容
りりー
常連さん
会議室デビュー日: 2006/08/03
投稿数: 31
投稿日時: 2006-08-11 18:12
Strutsのhtml:textタグを使用してます。
onchangeイベントハンドラでJavaScriputで作成した関数changeFlagを呼び出しています。この関数には引数が1つあります。リストのインデックス値渡したいのですがうまくいきません。
等号記号が必要ですというJSPエラーになります。

下記のJSP内容のmIndexの値を引数に渡したいのですが。
教えてください。よろしくお願いします。


JSPの内容
<logic:present name="aaForm" property="FindList">
<table class="ListDisp">
<logic:iterate id="listData" name="aaForm" property="FindList" indexId="mIndex">
<tr>
<td>
<html:text name="listData" property="thisComment" indexed="true" maxlength="32" size="75" onchange="changeFlag(<bean:write name="mIndex"/>);"></html:text>
</td>
</tr>
</logic:iterate>
</table>
</logic:present>



[ メッセージ編集済み 編集者: りりー 編集日時 2006-08-11 19:36 ]
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2006-08-11 18:23
焼きそばです。

引用:

りりーさんの書き込み (2006-08-11 18:12) より:
Strutsのhtml:textタグを使用してます。
onchangeイベントハンドラでJavaScriputで作成した関数changeFlagを呼び出しています。この関数には引数が1つあります。リストのインデックス値渡したいのですがうまくいきません。下記のJSP内容のmIndexの値を引数に渡したいのですが。
教えてください。よろしくお願いします。

<html:text name="listData" property="thisComment" indexed="true" maxlength="32" size="75" onchange="changeFlag(<bean:write name="mIndex"/>);"></html:text>




onchange="changeFlag(<bean:write name="mIndex"/>);"
だとダブルクォーテーションが文法的に引っかかります。
なのでmIndexにはシングルクォーテーションで囲ってあげましょう。

また、mIndexはJavaのIntegerオブジェクトになりますので
スクリプトレットを使用してintValueメソッドで取得する必要があります。

りりー
常連さん
会議室デビュー日: 2006/08/03
投稿数: 31
投稿日時: 2006-08-11 19:32
早速の回答ありがとうございます。
シングルクォーテーションにしてみたところ画面出力時に構文エラーになります。
下記の方法も試したのですが、うまくいきません。
<% int indexVar = mIndex.intValue(); %>
<html:text name="listData" property="thisComment" indexed="true" maxlength="32" size="75" onchange="changeFlag(<%=indexVar %>);"></html:text>

どうしたらよいでしょうか
お願いします。

引用:

焼きそばさんの書き込み (2006-08-11 18:23) より:
焼きそばです。
onchange="changeFlag(<bean:write name="mIndex"/>);"
だとダブルクォーテーションが文法的に引っかかります。
なのでmIndexにはシングルクォーテーションで囲ってあげましょう。

また、mIndexはJavaのIntegerオブジェクトになりますので
スクリプトレットを使用してintValueメソッドで取得する必要があります。



[ メッセージ編集済み 編集者: りりー 編集日時 2006-08-11 19:42 ]

[ メッセージ編集済み 編集者: りりー 編集日時 2006-08-11 19:43 ]
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2006-08-14 22:21
もう一押しです。
まず前提としてあるのが、
・タグエレメント中にタグエレメントを記述することは出来ません。
・属性値はダブルクォートで囲むと文字列として評価します。

このため、属性値をシングルクォートで囲む必要があります。
書き方の問題だけですので書きますが
コード:
onchange='<%="changeFlag(" + mIndex + ");"%>'


といったふうになります。
りりー
常連さん
会議室デビュー日: 2006/08/03
投稿数: 31
投稿日時: 2006-08-15 14:32
皆様、いろいろと回答ありがとうございます。
とりあえず、Strutsのhtml:textタグに固執せず、HTMLのinputタグを使用して
そこでonchangeハンドラで改めてbean:writeタグを使用したらうまくいきました。

そもそもはリストの所定の位置を取得したり再設定したりするのに便利なので
Strutsタグを使用していたのですが、あきらめて呼び出しているJavascriptの関数内で
自力で設定することにしました。
お騒がせしました。

暁さんが教えてくださった方法も試したのですが、<%="changeFlag(" + mIndex + ");"%>の部分がjavascriptだと認識されないようなので・・・

いろいろありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)