You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSTL/AngularJS中针对特定值停用表达式语言?

解决方案

方法1:修改AngularJS的表达式分隔符

直接替换Angular默认的表达式标记,避开用户输入的{{}}。在你的Angular模块配置里添加这段代码:

angular.module('你的应用模块名', []).config(function($interpolateProvider) {
  // 把默认的{{}}替换成[[ ]]或者其他不冲突的符号
  $interpolateProvider.startSymbol('[[');
  $interpolateProvider.endSymbol(']]');
});

改完之后,Angular只会解析[[ ]]包裹的内容,用户输入的{{}}就会被当成普通文本直接展示,完全不影响JSP的EL功能。

方法2:用<c:out>的HTML转义特性

<c:out>默认会转义XML特殊字符,显式开启escapeXml="true"(默认就是true,写出来更明确),把{{和}}转成HTML实体:

<c:out value="${stringValue}" escapeXml="true" />

转义后{{变成&#123;&#123;,}}变成&#125;&#125;,浏览器渲染时会显示成正常的{{}},而且Angular不会把这些实体当成表达式解析。

方法3:手动转义字符串中的{{和}}

如果不想用HTML转义,用JSTL的字符串替换函数,给{{和}}加上反斜杠,让Angular忽略它们:
首先确保页面引入JSTL函数标签库:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

然后处理字符串:

<c:set var="escapedString" value="${fn:replace(fn:replace(stringValue, '{{', '\\{{'), '}}', '\\}}')}" />
<c:out value="${escapedString}" />

这样用户输入的{{.}}会变成\{{.}},Angular会把它当成普通文本,不会尝试解析里面的内容。

内容的提问来源于stack exchange,提问作者Jad Chahine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:45:45