如何使动态属性在JSP标记文件中工作?
问题描述:
所以根据我的JSP参考书,以及所有其他的参考,我可以在网上找到,我应该能够做到像:如何使动态属性在JSP标记文件中工作?
<%@ tag dynamic-attributes="dynamicAttributesVar" %>
,然后当一个人在用的属性,我没有在属性指令定义,我应该能够从“dynamicAttributesVar”地图访问属性:
<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>
然而,这是不行的,在所有;当我尝试时,我收到“dynamicAttributesVar无法解析”错误。现在
,我没有发现(通过查看标签生成的Java类),我可以“砍”的工作动态做属性变量:
<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>
现在,黑客无法正常工作除非我也在我的标记指令中使用动态属性参数,所以看起来该参数正在做。
但是我想知道的是,我怎样才能让它为所有其他JSP用户做到这一点?
答
“dynamicAttributesVar”不是动态属性所在页面上下文中的键的名称吗?所以,你可以做
<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/>
,或者如果你必须使用小脚本:
Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar")
(免责声明:在直接的Java实现标签我还没有尝试过,我只是用动态属性..但它似乎是合理的)
答
只是试图获得一个回答四年的问题的徽章。
我也遇到过这个问题,并且在O'Reilly处遇到一些帮助,使用JSTL代替scriptlet。
楼主也可以使用此代码来获取所有的键/值:
<c:forEach items="${dynamicAttributesVar}" var="a">
${a.key}="${a.value}"
</c:forEach>
这会得到一个特定的值:
<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>
啊,才使得这么多的意义!你的建议工作,稍作修改(我不得不使用jspContext.getAttribute而不是pageContext.get)。感谢一堆! – machineghost 2009-04-18 00:08:02