如何在 JSP 表达式语言中进行 HTML 编码?

Posted

技术标签:

【中文标题】如何在 JSP 表达式语言中进行 HTML 编码?【英文标题】:How to HTML-encode in the JSP expression language? 【发布时间】:2011-05-30 09:59:28 【问题描述】:

考虑以下 JSP:

<param name="FlashVars" value="$flashVars" />

$flashVars 的值包含 & 符号,需要在输出前进行编码。相反,JSP 期望 $flashVars 的值是一段 html,并逐字输出与符号,从而导致 HTML 错误。

我发现这样写可以得到要编码的值:

<param name="FlashVars" value="<c:out value="$flashVars"/>" />

但这看起来真的很难看,并且让我的 IDE 无法启动。有没有更好的方法来获得相同的结果?

【问题讨论】:

如果 IDE 是上述问题的唯一问题,那就换个 IDE - Intellij IDEA 很棒。 我的主要问题是它看起来很难看。 :-) 我不想将标签嵌套在另一个标签的属性中。 我不怪 Eclipse;这是一种非常复杂的非组合模板语言,如果不为其编写完整的编译器(恕我直言,这不是 Eclipse 的工作),就很难进行正确的突出显示/错误报告。 【参考方案1】:

使用fn:escapeXml()

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<param name="FlashVars" value="$fn:escapeXml(flashVars)" />

【讨论】:

以上是关于如何在 JSP 表达式语言中进行 HTML 编码?的主要内容,如果未能解决你的问题,请参考以下文章

JSP 语法

JSP学习笔记:JSP语法和指令

jsp

JSPJSP基础语法

JSP的EL表达式语言

如何解决 jsp 中url传值的中文乱码问题