2014-06-09 119 views
5

我必须是盲人或使用错误的搜索词,因为我无法找到一个好的答案。如何访问嵌套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> 
+0

没有接受者?这是一个愚蠢的问题?看起来应该如此简单。我认为这将在15分钟内回复。大声笑 – user3311662

回答

0

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

-1

可以使用找到你的父标签:

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

然后,你可以在家长的公共方法,孩子们可以用它来与它进行交互。

看看这个URL的进一步细节:http://www.informit.com/articles/article.aspx?p=26119&seqNum=9

+0

这只适用于全面的自定义标签,而不是OP正在使用或询问的标签文件。 – marc82ch