特殊文字にこの奇妙な問題があります。 JSPでは、フィールド名をIDとして使用しており、名前は次のようになります
id="<1 and &>2" (OR)
id="aaa & bbb"
名前以外のIDを使用するオプションはありません。これはバックエンドから取得する唯一のものです。
だから、JSTLを使用してすべての特殊文字を削除するロジックはありますか?現在のシナリオでは、JSでIDを使用していくつかの操作を行います。これは、ブラウザの種類ごとに多くの問題を引き起こしています。
事前に感謝し、提案してください...
JSTLは、HTMLの特殊文字をエスケープする2つの手段を提供します。
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/>
そして
${fn:escapeXml(myName)}
両方とも、特殊文字をそれぞれのHTMLエンティティに変換します(<
は<
になり、&
は&
になります)。
IDはHTMLでエンコードする必要がありますが、JavaScriptではエンコードしないでください。
あなたの質問は誤解されていたと思います。私はあなたと同じ場所に着き、excapeXml = "false"で問題を解決しました。
<c:out value="${id}" escapeXml="false"/>
データベースに次のようなデータがありました:
lt; Hello Worldgt;
そしてescapeXml = "false"で表示しました
<Hello World>
Spring HtmlUtils.htmlEscape(String input)を使用します。
私は、他の特殊文字とは別に単一引用符をエスケープする必要があるシナリオに直面しました。その場合、fn:escapeXmlは失敗しました。そこで、Spring APIのJavaScriptUtils.javaScriptEscape()を使用し、タグを作成して適用しました。これで問題は解決しました。 URLも参照しました: http://www.coderanch.com/t/528521/JSP/Java/Passing-JSTL-variable-special-characters 。