2014-06-09 114 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