首页 > 解决方案 > Glassfish 找不到 taglib 的 setter 方法

问题描述

我在 StackOverflow 中阅读了许多其他文章,但没有一篇考虑我的情况。

我有一个 java web 项目,其中有一个带有“Height”属性的标签,第一个字母大写。在 java 类中,我有“ setHeight”方法,但是当我使用 Java 8.0.152 在 Glassfish 5.0 中调用运行应用程序的标记时,它会启动错误“找不到属性高度的设置方法”。相同的代码在 Java 6.0.45 的 JRun 应用服务器上正常工作。

我不想更改属性的名称,因为它是从许多jsp.

Glassfish 在等待什么 setter 方法?我已经尝试过这些,但它们都不起作用:

  • 设置高度
  • 设定高度
  • 设置高度
  • 高度
  • 设置高度
  • 设置高度
  • 高度
  • 设置高度
  • 设置高度
  • 设置八

非常感谢您提前。

这是我的代码:

/test.tld

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>
        <tlibversion>1.0</tlibversion>
        <jspversion>1.1</jspversion>
        <shortname>Test tag</shortname>
        <info/>
        <tag>
            <name>DataTable</name>
            <tagclass>com.test.taglib.DataTableTag</tagclass>
            <bodycontent>JSP</bodycontent>
            <attribute>
                <name>Height</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
        </tag>
    </taglib>

/test.java

    private String Height;

    public void setHeight(String sHeight) {
        this.Height = sHeight;
    }

/test.jsp

    <test:DataTable  Height="50">lorem ipsum</test:DataTable>

标签: javaglassfish

解决方案


您的属性名称必须以小写字符开头:

private String height;

public void setHeight(String sHeight) {
    this.height = sHeight;
}

因为命名约定说变量 Name 必须以小写字符开头,所以 setter 比 set+first char 大写 ... 这就是 El 的工作方式。

有关更多信息,请参阅https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html


推荐阅读