Scriptlet变量不会在自定义JSP标记的属性中求值
Scriptlet variable doesn't get evaluated inside an attribute of a custom JSP tag
我试图有一个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
属性中被求值成功。
这是如何引起的,我如何解决它?
我不确定<mysecurity:secure_link>
是自定义的还是现有的第三方JSP标记库。现代JSP标记通常不计算遗留的scriptlet表达式。你应该使用EL(表达式语言)来代替。
首先确保commentUUID
变量被存储为页面或请求作用域的属性,以便它对EL可用,如下面的预处理servlet示例所示:
request.setAttribute("commentUUID", commentUUID);
或在JSP中使用另一个脚本:
<% request.setAttribute("commentUUID", commentUUID); %>
或使用JSTL的<c:set>
在JSP:
<c:set var="commentUUID"><%=commentUUID%></c:set>
,那么您可以在EL中按如下方式访问它:
<mysecurity:secure_link actionOnClick="editComment('${commentUUID}');return false;" />
最后对我有用的是,使用@BalusC的建议是使用editcomment(this.id.split('_')[1])。正确的工作代码如下:
<span>
<mysecurity:secure_link id='<%="editButton_"+commentUUID%>' entitlement=""
actionOnClick="javascript:editComment(this.id.split('_')[1]);return false;"
isSurroundedByBrackets="true" enableTitle="" disableLink="<%=disableLink%>">
<span style="color:#0033BB; font:8pt arial;">
<bean:message key="button.edit" />
</span>
</mysecurity:secure_link>
</span>
相关文章:
- 如何使用JavaScript在JSP页面上从下拉列表中呈现选定值的属性
- 在 jsp 中显示属性文件的值,而不使用 scriptlet
- 如何在JavaScript中将JSP请求属性转换为字符串并将其分配给对象
- 如何在呈现之前在jsp中将textfield的值设置为会话属性
- 如何使用按钮的jsp点击事件将属性设置为struts-bean
- 使用Set属性在JSP:UseBean中设置javascript变量值
- 如何在 JSP 页面中获取 JavaScript 会话属性
- 如何根据jsp中某个下拉选项的值来更改表单中字段的属性
- 不带 JS 的 JSP 动态表单操作属性
- 使用 JavaScript 在 JSP 中访问 JavaBeans 属性
- 来自 jsp 和 javascript 中的请求属性的对象索引数组
- 使用 JSP 将 JavaScript 变量添加到会话属性
- 在 jsp 中属性 href 的错误值
- jsp中的非法属性(违反声纳)
- JSP将带有XML字符的String属性传递给JavaScript函数不起作用
- JSP/JS中的动态属性
- 无法在parent.jsp中获取子属性
- 使用javascript更改JSP自定义标记的JSP自定义属性值
- Facebook javascript SDK共享版本从属性文件到jsp不工作[webapp]
- JSP将会话属性传递给javascript函数