如何在嵌套的JSP标记文件中访问父属性?

时间:2014-06-09 19:24:52

标签: jsp jsp-tags custom-tags

我必须是盲人或使用错误的搜索词,因为我找不到合适的答案。

我有两个自定义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>

2 个答案:

答案 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