我必须是盲人或使用错误的搜索词,因为我找不到合适的答案。
我有两个自定义JPS标记文件。一个将嵌套在另一个中。如何从子标记内部访问父标记中的属性?
一种解决方法是添加一个变量来请求范围,但我不喜欢这个选项,它可能会导致一些问题。是否有更简单的选择?
谢谢!
<%-- OuterTag.tag --%>
--------------------------------------
<%@tag %>
<%@attribute name="color" required="true" %>
<c:set var="color" value="${color}" scope="request" /> <%-- I'm trying to avoid doing this --%>
<div>
<jsp:doBody/>
</div>
<%-- InnerTag.tag --%>
--------------------------------------
<%@tag %>
<p style="background-color: ${parent.color}"/> <%-- I want to do something like this --%>
<%-- Example Usage --%>
--------------------------------------
<custom:OuterTag color="red">
<custom:InnerTag/>
<custom:InnerTag/>
<custom:InnerTag/>
</custom:OuterTag>
答案 0 :(得分:0)
你在这里尝试做的是完全符合逻辑的 - 以及自定义标签和标签文件应该允许我们实现的内容。此行为是基于实现的 - 并已在Apache see here上修复。你用的是什么容器?我在Jetty遇到了类似的问题,并提交了另一个已被承认但尚未解决的错误。
答案 1 :(得分:0)
您可以使用以下命令找到您的父标记:
ParentTag parent = (ParentTag)findAncestorWithClass(this, ParentTag.class);
然后,您可以在子项可以使用的父项上使用公共方法与其进行交互。
请查看此网址以获取更多详细信息:http://www.informit.com/articles/article.aspx?p=26119&seqNum=9