2008-10-22 70 views
2

我想在我的自定義標籤使用多個屬性,例如:JSP標籤庫(傳遞屬性)

<mytaglib:mytag firstname="Thadeus" lastname="Jones" /> 

我怎樣才能訪問屬性在TagHandler代碼?

+0

如果你仍然有可能拋出一些代碼樣本的問題。 – LizB 2008-10-22 15:04:14

回答

0

不是你問的問題的答案,但我討厭(即從未寫過)TagHandler's,但我喜歡tag files。讓您使用jsp文件編寫自定義標籤。你可能知道它們,並且不可用/適用 - 但我想我會提及它們以防萬一。

3

爲了訪問參數,您的TagHandler類應該定義私有成員並提供訪問器方法。

public class TagHandler extends TagSupport { 
    private String firstName; 
    private String lastName; 

    public void setFirstName(String firstname) { firstName = firstname; } 
    public void setLastName(String lastname) { lastName = lastname;} 
} 

然後您可以通過TagHandler變量訪問參數。

public int doStartTag() throws JspException { 
    pageContext.getOut().print(lastName + ", " + firstName); 
} 

如果您仍然遇到問題,請仔細檢查您的命名約定,Java interpeter試圖猜測setter方法是什麼。所以如果你的參數是「FirstName」,那麼set參數必須是「setFirstName」,如果參數是「lastname」,set參數必須是「setlastname」。我傾向於遵循前者,因爲它是標準的Java命名約定。

+0

是啊..而我米只是在做這個東西,我米得到錯誤 無法找到該屬性的setter方法:我已經在TLD文件中指定的屬性名姓 .. 什麼可能b是出難題.. – 2008-10-22 07:17:40

0

爲了演示這個問題的解決辦法,我們舉一個類比。假設我們有從「index.jsp」檢索到的「用戶名」和「密碼」,我們必須在自定義標籤屬性中傳遞我們的數據。在我的情況下,其工作

<body> 

<% 
String name=request.getParameter("name"); 
String password=request.getParameter("password"); 
%> 

<%@ taglib prefix="c" uri="/WEB-INF/mytag.tld" %> 

<c:logintag name="<%=name %>" password="<%=password %>"/>