JSP自定义标记库(传递属性)

时间:2008-10-22 06:16:03

标签: jsp-tags

我正在尝试在自定义标记中使用多个属性,例如:

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

如何访问TagHandler代码中的属性?

3 个答案:

答案 0 :(得分:4)

为了访问参数,您的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命名约定。

答案 1 :(得分:0)

不是你问的答案,但我讨厌(即从未写过)TagHandler,但我喜欢tag files。允许您使用jsp文件编写自定义标记。你可能知道它们并且不适用/不适用 - 但我想我会提到它们以防万一。

答案 2 :(得分:0)

为了演示这个问题的解决方案,我们可以进行类比。假设我们有从index.jsp中检索到的“userName”和“password”,我们必须在自定义标记属性中传递我们的数据。在我的情况下,它的工作

<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 %>"/>