如何访问嵌套JSP标记文件中的父属性?
问题描述:
我必须是盲人或使用错误的搜索词,因为我无法找到一个好的答案。如何访问嵌套JSP标记文件中的父属性?
我有两个自定义的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>
答
你在这里尝试做什么完全合乎逻辑 - 而且自定义标签和标签文件应该让我们实现。此行为基于实现 - 已在Apache see here上修复。你使用什么容器?我在Jetty遇到了类似的问题,并提出了另一个已被公认但尚未解决的错误。
答
可以使用找到你的父标签:
ParentTag parent = (ParentTag)findAncestorWithClass(this, ParentTag.class);
然后,你可以在家长的公共方法,孩子们可以用它来与它进行交互。
看看这个URL的进一步细节:http://www.informit.com/articles/article.aspx?p=26119&seqNum=9
+0
这只适用于全面的自定义标签,而不是OP正在使用或询问的标签文件。 – marc82ch
没有接受者?这是一个愚蠢的问题?看起来应该如此简单。我认为这将在15分钟内回复。大声笑 – user3311662