java - 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>
解决方案
您的属性名称必须以小写字符开头:
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
推荐阅读
- javascript - ReactDOM.render 找不到我的 div 元素
- java - 无法删除在另一个 Activity Android 中设置的共享首选项
- jquery - 无法通过 jQuery 访问 iFrame 的类的高度
- javascript - 如何在 js 饼图中显示值而无需鼠标悬停在 lwc salesforce
- reactjs - 如何在反应中为 Azure QnA Bot 创建自定义 UI?
- python - 如何使用 Google Books API 返回包含多本书的搜索结果?
- vue.js - 如何修复未显示子路由的 Vue 3 路由?
- python - Python 中 Tkinter 的 Mac OS 的 wm_overridedirect 方法的替代方案
- kubernetes - 如何使用 initContainer 设置环境变量或修改主容器的启动命令?
- json - 加载到雪花变体列中的 JSON 文件大小