Javascript エンジンは以下のコードをどのように解釈できますか?
HTML に埋め込まれた JSTL タグだけが解釈されると思いましたか?
<script type="text/javascript">
<c:choose>
<c:when test="${fn:contains(val, 'test')}">
alert('test);
</c:when>
</c:choose>
</script>
Javascript エンジンは以下のコードをどのように解釈できますか?
HTML に埋め込まれた JSTL タグだけが解釈されると思いましたか?
<script type="text/javascript">
<c:choose>
<c:when test="${fn:contains(val, 'test')}">
alert('test);
</c:when>
</c:choose>
</script>
JavaScript エンジンは JSTL を認識しないため、JSTL を解釈しません。JSTL は、応答がブラウザーに送信される前にサーバー側で処理されます。JSTL/Java 側は JSTL/Java コードのみを考慮します。それ以外は基本的にそのまま応答で渡されます。したがって、script 要素を含めるか、JavaScript やその他の html 要素を含めるかは関係ありません。すべてが応答の一部になります。
ブラウザー内で [View Page Source] を選択すると、ブラウザーが受け取ったコードが表示されます。コードには JSTL が含まれていません。
あなたの特定の例では、応答には、JSTL テストの結果に応じて、その 1 行の script 要素alert('test')
または空の script 要素のみが含まれます。
JSTL タグが埋め込まれた JSP ファイルを処理する Java Servlet / JSP サーバー (Tomcat など) を実行する必要があります。ブラウザーは JSTL タグを認識しなくなります。