EL式を使用して、一重引用符、二重引用符、改行による問題を解決します.

1347 ワード

前述したように、JSPでACTIONのパラメータを受信する場合、使いやすいのがEL式です.
ただし、jsで受信パラメータにEL式を使用する場合は、value:'${param}';paramに単一引用符、二重引用符、または改行文字が含まれている場合、ページにスクリプトエラーが報告され、ページが正常に表示されません.
多くのコードを変更したくないとき、工事の中で最初からこの問題を考慮していません.私のように、最も簡単な方法は、サーバーの性能を犠牲にすることです(このように一般的にはお勧めしません).
Javaプログラムを書いて、表示する値をフィルタします.
public static String fs(String s){
 if(s!=null && s.length()>0){
 s = s.replaceAll("(\r|
|\r
|
\r)", " "); s = s.replaceAll("\"","\\\\"+"\""); s = s.replaceAll("\'","\\\\"+"\'"); return s; }else{ return ""; } }
このコードは非常に簡単で、内容の改行をスペースに置き換え、引用符(単一、二重)を'または"に置き換え、つまりJSのエスケープフォーマットは、EL式の使用に影響しません.
また、EL式のカスタムラベルライブラリを使用することもできます.これは、バックグラウンド処理文字列の圧力をフロントに移すことが推奨されます.
WEB-INFの下にフォルダtagsを作成し、ラベルファイルを保存します.
そしてtagsフォルダの下にformatForJSを作成する.tldファイル、カスタム関数を記述します.
A tag library exercising SimpleTag handlers.1.0SimpleTagLibrary/fsformat string value for JSfskyo.org.ClassNamejava.lang.String fs(java.lang.String)

Webを構成します.xml
/WEB-INF/tags/formatForJS.tld

JSPページでの応用



paramに単一引用符が含まれている場合は、スクリプトエラーは報告されません.
以上のコードはtomcat 6でテストに合格しました.
原文参照先:http://www.baisoujs.com/detail_137277744000564.html