我想在我的自定義標籤使用多個屬性,例如:JSP標籤庫(傳遞屬性)
<mytaglib:mytag firstname="Thadeus" lastname="Jones" />
我怎樣才能訪問屬性在TagHandler代碼?
我想在我的自定義標籤使用多個屬性,例如:JSP標籤庫(傳遞屬性)
<mytaglib:mytag firstname="Thadeus" lastname="Jones" />
我怎樣才能訪問屬性在TagHandler代碼?
不是你問的問題的答案,但我討厭(即從未寫過)TagHandler's,但我喜歡tag files。讓您使用jsp文件編寫自定義標籤。你可能知道它們,並且不可用/適用 - 但我想我會提及它們以防萬一。
爲了訪問參數,您的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命名約定。
是啊..而我米只是在做這個東西,我米得到錯誤 無法找到該屬性的setter方法:我已經在TLD文件中指定的屬性名姓 .. 什麼可能b是出難題.. – 2008-10-22 07:17:40
爲了演示這個問題的解決辦法,我們舉一個類比。假設我們有從「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 %>"/>
如果你仍然有可能拋出一些代碼樣本的問題。 – LizB 2008-10-22 15:04:14