- - PR -
strutsのhtmlタグがHTMLに変換された際のダブルクォーテーションのエスケープについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-17 00:41
JSPファイルの中で、JavaScriptの関数を呼び出そうとしています。
JavaScriptの関数内にstrutsのhtmlタグ記述があります。 下記は関数の例です。 function ex() { com.innerHTML = "<html:form action="/TestAction"> …いろいろ… </html:form>"; } これがコンパイルされて最終的に出力されるHTMLは、下記のようになります。 function ex() { com.innerHTML = "<form name="TestActionForm" method="post" action="/hogehoge/TestAction.do"> …いろいろ… </form>"; } この出力されたJavaScriptはダブルクォーテーションのエスケープがされておらず、 正しく動作しません。 function ex() { com.innerHTML = "<form name=\"TestActionForm\" method=\"post\" action=\"/hogehoge/TestAction.do\"> …いろいろ… </form>"; } このようなJavaScriptを出力できれば、正しく動作すると思うのですが、 JSPをこのように出力させることはできるのでしょうか。 または、他の解決法があればご教授ください。 | ||||
|
投稿日時: 2006-08-17 00:51
試していないですが、
function ex() { com.innerHTML = '<html:form action="/TestAction"> …いろいろ… </html:form>'; } じゃダメですか?シングルクォーテーションなら ダブルクォーテーションをエスケープしなくてもいいと思うのですが。 あと、一旦不可視のDIVの中に書き出してから、 innerHTMLで拾うというのもありかと思います。 | ||||
|
投稿日時: 2006-08-17 11:53
シングルクォーテーションを使うことで、ダブルクォーテーションの問題は解決できそう
なのですが、また別の問題がでてきました。 「…いろいろ…」の部分にhtml:optionsタグがあるのですが、 これがHTMLになったときに、1行でなく複数行として展開されるので、 そこで切れてしまっているようです。 こんな感じです。 </option>の後に\を付けられれば解決しそうですが、これは無理ですよね。 com.innerHTML = ' … <select name="target">\ <option value="0" selected="selected">あああ</option> <option value="1">いいい</option> …'; > あと、一旦不可視のDIVの中に書き出してから、 > innerHTMLで拾うというのもありかと思います。 こちらの方法が良くわからないので、詳細を教えていただけないでしょうか。 DOMを使うということでしょうか。 | ||||
|
投稿日時: 2006-08-17 12:16
って感じです。 | ||||
|
投稿日時: 2006-08-19 19:51
ありがとうございます。うまくいきました。
|
1