OnClick内でのJSP出力について
こんにちは!アイサット研修担当です。
本日はJavaのコーディングをしていてちょっとつまったところを備忘録として残していきたいなと思います!
サーブレットからJSPに複数のボタン生成のコードを書いていまして、そのボタンの数が可変で決まっていないので、inputタグのname属性は全て同じ名前のsubmitボタンを生成しました。しかしnameが同じだとどのボタンが押されたかわかりませんよね。
なのでsubmitボタンにOnClick属性をつけ、そこにJavascriptの関数を書き、hiddenタグにどのボタンが押されたかを書き込むことでどのボタンが押されたかを判断する情報を送信することにしました。(OnClickはsubmitよりも早く処理するので)
そこで関数の引数にこんな感じで書きました。
<% String path = hogehogefugafuga %>
<input ・・・ onclick="btnChk('<%= path %>')">
よし!これで動くだろう!と意気揚々としたものの、動かず。
何でだろう、と思い出力されたHTMLを見てみるとbthChk関数の引数がそのまま「<%= path %>」と表示されているではありませんか!
引数にStringのJSPコードを入れるつもりが、Javascriptの引数判定が勝ってしまっていたんですね。
以下のようにして解決しました。
<% String path = hogehogefugafuga %>
<input ・・・ onclick="<%='btnChk(' + path + ')'%>">
これでOK!
関数名もJSPで出力することで万事解決!