2014-02-20 58 views
1

變量下面我有通過標籤庫定義體內

<po:create-option-entry var="optionEntry"> 

    <li>${optionEntry.name}: <%=HtmlElementUtil.printAction(optionEntry.getAction())%></li> 

</po:create-option-entry> 

標籤庫和我收到optionEntry未定義例外。我已經看到了這樣的一些代碼,但不記得是怎麼回事以使變量在taglib的主體內部可見。

PS:標籤庫的定義如下

<tag> 
    <name>create-option-entry</name> 
    <tagclass>br.com.facilit.portlets.planooperativo.taglib.action_menu_entry.CreateOptionEntryTag</tagclass> 
    <bodycontent>JSP</bodycontent> 

    <attribute> 
     <name>var</name> 
     <required>true</required> 
     <rtexprvalue>true</rtexprvalue> 
    </attribute> 
</tag> 
+0

不要使用小腳本。該標記可能定義了名爲「optionEntry」的頁面範圍屬性,而不是名爲'optionEntry'的局部變量。 –

+0

但我想在這種情況下使用scriptlets .. – thiagoh

+0

但你不應該。決不。如果你需要定義一個自定義標籤或自定義EL功能。無論您使用什麼,您都需要訪問名爲'optionEntry'的頁面範圍屬性。 –

回答

0

我已經找到一種方法來完成我的問題。我需要做的就是創建一個CreateOptionEntryTei

<tag> 
    <name>create-option-entry</name> 
    <tagclass>pack.CreateOptionEntryTag</tagclass> 
    <teiclass>pack.CreateOptionEntryTei</teiclass> 
    <bodycontent>JSP</bodycontent> 
    <attribute> 
     <name>var</name> 
     <required>true</required> 
     <rtexprvalue>true</rtexprvalue> 
    </attribute> 
</tag> 

和定義類這樣

public class CreateOptionEntryTei extends TagExtraInfo { 

    public VariableInfo[] getVariableInfo(TagData data) { 

     String var = data.getAttributeString("var"); 

     return new VariableInfo[] { new VariableInfo(var, OptionEntry.class.getName(), true, VariableInfo.NESTED), }; 
    } 
}