gpt4 book ai didi

javascript - 在 JSF 组件属性中转义 EL 中的 JavaScript 引号

转载 作者:行者123 更新时间:2023-11-30 12:13:45 25 4
gpt4 key购买 nike

我有一个取决于变量状态的 onclick 事件。所以我需要做类似的事情

onclick="#{object.isEnabled ? 'ch.my.js_method('#{object.property}'); return false;' : 'return false;'"

问题是,我不能在 onclick 中使用 '。我如何转义 EL 中的引号?

最佳答案

你可以用 \ 转义它们或 \\ ,但每个 EL 实现的规则不同,因为它在 EL 规范中没有明确规定(Oracle 的 EL impl 需要单反斜杠,但 Apache 需要双反斜杠)。你需要 +=用于字符串连接 EL 表达式的运算符。

<x:someComponent onclick="#{object.isEnabled ? 'ch.my.js_method(\'' += object.property += '\'); return false;' : 'return false;'}" />

最安全的选择是在 <c:set> 的帮助下创建一个别名.

例如

<c:set var="js_method" value="ch.my.js_method('#{object.property}'); return false;" />
<x:someComponent onclick="#{object.isEnabled ? js_method : 'return false;'}" />

只有在 #{object.property} 时,你才有潜在的问题可以包含 JS 特殊字符,这反过来会导致无效的 JS 输出,例如单引号或换行符。转到下面的第二个链接以获取解决方案。

另见:

关于javascript - 在 JSF 组件属性中转义 EL 中的 JavaScript 引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com