【问题标题】:JSP custom tag library (Passing Attributes)JSP自定义标签库(传递属性)
【发布时间】:2008-10-22 06:16:02
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您仍然遇到问题,可能会抛出一些代码示例。

标签: jsp-tags


【解决方案1】:

为了访问参数,您的 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 解释器正试图猜测 setter 方法是什么。因此,如果您的参数是“FirstName”,那么设置方法必须是“setFirstName”,如果参数是“lastname”,则设置参数必须是“setlastname”。我更喜欢使用前者,因为它是标准的 Java 命名约定。

【讨论】:

  • 是的..虽然我只是在做这些事情,但我收到错误无法找到属性的设置方法:名字我已经在 tld 文件中指定了属性名称.. 可能会发生什么问题..
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    为了演示这个问题的解决方案,让我们做一个类比。假设我们有从 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 %>"/>
    

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 2016-10-22
      • 1970-01-01
      • 2011-03-09
      • 2011-12-13
      • 2010-09-18
      相关资源
      最近更新 更多