因此,根据我的JSP参考书以及我在网上可以找到的所有其他参考书,我应该能够执行以下操作:
<%@ tag dynamic-attributes="dynamicAttributesVar" %>
然后,当有人使用我在属性指令中未定义的属性时,我应该能够从“ dynamicAttributesVar”映射访问该属性:
<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>
但是,那根本行不通。我尝试时仅收到“ dynamicAttributesVar无法解决”错误。
现在,我确实发现(通过查看标记的生成的Java类)可以通过执行以下操作来“破解”有效的动态属性变量:
<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>
现在,除非我还在我的tag指令上使用dynamic-attributes参数,否则该破解将无法工作,因此该参数似乎正在执行 某些操作 。
但是我想知道的是,如何使它对其他每个JSP用户执行该操作?
“ dynamicAttributesVar”不是动态属性放入的页面上下文中键的名称吗?所以你可以做
<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/>
或者,如果您必须使用脚本,请执行以下操作:
Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar")
(免责声明:我还没有尝试过,我只是在带有直接Java实现的标记中使用了动态属性……但这似乎是合理的)