【问题标题】:How to access parent attribute in a nested JSP Tag File?如何访问嵌套 JSP 标记文件中的父属性?
【发布时间】:2014-07-30 09:59:22
【问题描述】:

我一定是盲目的或使用了错误的搜索词,因为我无法找到一个好的答案。

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

【问题讨论】:

  • 没有接受者?这是一个愚蠢的问题吗?似乎它应该如此简单。我以为它会在 15 分钟内得到答复。大声笑

标签: jsp jsp-tags custom-tags


【解决方案1】:

您在这里尝试做的事情是完全合乎逻辑的 - 自定义标签和标签文件应该允许我们实现。此行为是基于实现的 - 并且已在 Apache see here 上修复。你用的是什么容器?我在 Jetty 中遇到了类似的问题,并提交了另一个已确认但尚未解决的错误。

【讨论】:

    【解决方案2】:

    您可以使用以下方法找到您的父标签:

    ParentTag parent = (ParentTag)findAncestorWithClass(this, ParentTag.class);
    

    然后,您可以在父级上设置公共方法,子级可以使用它与之交互。

    查看此网址了解更多详情:http://www.informit.com/articles/article.aspx?p=26119&seqNum=9

    【讨论】:

    • 这仅适用于成熟的自定义标签,不适用于 OP 正在使用或询问的标签文件。
    猜你喜欢
    • 2012-10-17
    • 2020-08-25
    • 1970-01-01
    • 2011-02-03
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多