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

mac*_*ost 3 java tags jsp dynamic-attributes

所以根据我的JSP参考书,以及我可以在网上找到的所有其他参考,我应该能够做类似的事情:

<%@ tag dynamic-attributes="dynamicAttributesVar" %>
Run Code Online (Sandbox Code Playgroud)

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

<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>
Run Code Online (Sandbox Code Playgroud)

但是,这根本不起作用; 我尝试时只得到"dynamicAttributesVar无法解析"错误.

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

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>
Run Code Online (Sandbox Code Playgroud)

现在,除非我在tag指令中使用dynamic-attributes参数,否则该hack不起作用,所以看起来该参数正在做某事.

但我想知道的是,我怎样才能让它为其他每个JSP用户做它做的事情呢?

Bum*_*tle 5

只是试图获得一个徽章来回答一个四年前的问题.

我也有这个问题,并在O'Reilly遇到一些帮助使用JSTL而不是scriptlet.

原始海报本可以使用此代码获取所有键/值:

<c:forEach items="${dynamicAttributesVar}" var="a"> 
${a.key}="${a.value}" 
</c:forEach> 
Run Code Online (Sandbox Code Playgroud)

这将获得一个特定的值:

<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>
Run Code Online (Sandbox Code Playgroud)