Scriptlet 变量不会在自定义 JSP 标记的属性内进行计算
我试图在单击链接时调用 JavaScript 函数。此 JavaScript 函数在 JSP 标记的属性中定义,我尝试将 scriptlet 变量传递给该函数。但是,它不会被评估。代码的相关部分是:
<span>
<mysecurity:secure_link id='<%="editButton_"+commentUUID%>' entitlement=""
actionOnClick="editComment('<%= commentUUID %>');return false;"
isSurroundedByBrackets="true" enableTitle="" disableLink="<%=disableLink%>">
<span style="color:#0033BB; font:8pt arial;">
<bean:message key="button.edit" />
</span>
</mysecurity:secure_link>
</span>
IE8在左下角提到了一个JavaScript错误。当我右键单击并查看源代码时,生成的 HTML 为:
onclick="editComment('<%= commentUUID %>');return false;"
因此, <%=commentUUID%>
未在 actionOnClick
属性中进行评估,但已成功已在 id 属性中进行评估。
这是如何引起的以及如何修复它?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定
是自定义的还是现有的第 3 方 JSP 标记库。现代 JSP 标记通常不会评估旧版 scriptlet 表达式。您应该改用EL(表达式语言)。首先确保
commentUUID
变量存储为页面或请求范围的属性,以便 EL 可以使用它,如以下预处理 servlet:或在 JSP 中使用另一个 scriptlet:
或使用 JSTL的
在JSP中:然后在EL中可以如下访问:
I'm not sure whether the
<mysecurity:secure_link>
is a custom or an existing 3rd party JSP tag library. Modern JSP tags usually do not evaluate legacy scriptlet expressions. You should rather be using EL (Expression Language) instead.First ensure that
commentUUID
variable is been stored as an attribute of the page or request scope so that it's available to EL, like as the following example in a preprocessing servlet:or using another scriptlet in JSP:
or using JSTL's
<c:set>
in JSP:then you can access it as follows in EL:
根据 @BalusC 的建议,最终对我有用的是使用 editcomment(this.id.split('_')[1]) 。正确的工作代码如下:
What finally worked for me, with the @BalusC 's advice was to use editcomment(this.id.split('_')[1]). The correct working code is as follows: