2013-07-20 144 views
2

我已經做了一個自定義標籤,以驗證某些用戶會話狀態。但是,<c:url>在我的自定義標籤正文中不起作用。 JSP:JSP自定義或JSTL標籤內另一個自定義標籤

<a href="<c:url value="/user/logout/"/>">Logout</a> <!-- THIS IS OK! --> 
<bs:ifaccount logged="true"> 
    <-- THIS JUST FLUSHES <C:URL VALUE=... TO WEB BROWSER --> 
    <a href="<c:url value="/user/logout/"/>">Logout</a> 
</bs:ifaccount> 

變量聲明:

<tag> 
    <name>ifaccount</name> 
    <tag-class>bs.tags.IfLoggedTagHandler</tag-class> 
    <body-content>tagdependent</body-content> 
    <attribute> 
     <name>logged</name> 
     <type>java.lang.Boolean</type> 
     <required>true</required> 
    </attribute> 
</tag> 

標籤與SimpleTagSupport & getJspContent()來實現調用(空)

回答

1

你的問題是在你的標記聲明:

<body-content>tagdependent</body-content> 

您指定的你的標籤只包含文本。將其更改爲:

<body-content>scriptless</body-content> 

允許解析其他標籤。

+0

'類bs.tags.IfLoggedTagHandler的TLD爲SimpleTag指定了一個無效的主體內容(JSP)。「 - 項目版本爲具有'JSP 2.2'的'Java EE 6' –

+0

奇怪的是,它適用於我。你嘗試過「無腳本」嗎? – morgano

+0

無腳本是好的,所以我會接受答案,但是如果我想允許scriptlets呢? SimpleTagSupport是可能的還是我必須更改標籤實現方法? –