一尘不染

如何使动态属性在JSP标记文件中工作?

jsp

因此,根据我的JSP参考书以及我在网上可以找到的所有其他参考书,我应该能够执行以下操作:

<%@ tag dynamic-attributes="dynamicAttributesVar" %>

然后,当有人使用我在属性指令中未定义的属性时,我应该能够从“ dynamicAttributesVar”映射访问该属性:

<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>

但是,那根本行不通。我尝试时仅收到“ dynamicAttributesVar无法解决”错误。

现在,我确实发现(通过查看标记的生成的Java类)可以通过执行以下操作来“破解”有效的动态属性变量:

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>

现在,除非我还在我的tag指令上使用dynamic-attributes参数,否则该破解将无法工作,因此该参数似乎正在执行 某些操作

但是我想知道的是,如何使它对其他每个JSP用户执行该操作?


阅读 233

收藏
2020-06-10

共1个答案

一尘不染

“ dynamicAttributesVar”不是动态属性放入的页面上下文中键的名称吗?所以你可以做

<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/>

或者,如果您必须使用脚本,请执行以下操作:

Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar")

(免责声明:我还没有尝试过,我只是在带有直接Java实现的标记中使用了动态属性……但这似乎是合理的)

2020-06-10