gpt4 book ai didi

java - JSP自定义标签属性类型整型

转载 作者:行者123 更新时间:2023-11-29 03:52:56 26 4
gpt4 key购买 nike

我想创建一个自定义标签库,但在处理程序类中我想要整数属性。

在 tld 文件中,我有以下代码:

<tag>
<name>circle</name>
<tag-class>draw.Circle</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>x</name>
<required>true</required>
</attribute>
</tag>

还有其他整数属性,但此示例与其他属性相关。

处理程序类,目前看起来是这样的:

public class Circle extends TagSupport{
private Integer x;

public Integer getX() {
return x;
}
public void setX(String x) {
this.x = Integer.parseInt(x);
System.out.println("Set x");
}
}

我没有在tld文件中指定属性类型,默认应该是String。虽然我收到这样的错误:

Unable to find setter method for attribute: x

我还尝试将属性类型修改为:<type>java.lang.Integer</type>和 setter 方法:

public void setX(int x) {
}

我得到了同样的错误。

我应该如何定义 tld 文件中的属性和处理程序类中的 setter,这样我就不会收到 setter 错误?

最佳答案

JSP 自定义标签使用 JavaBeans技术,具有标准约定(这里的 a small JavaBeans tutorial 涵盖了主要方面)。

“bean 属性”(参见 PropertyDescriptor)由 getter 组成和/或 setter相同类型的方法(getter 的返回类型必须匹配 setter 的单个参数类型),否则它们不会映射到相同的 bean 属性(我猜类“wins”中的第一个方法)。因此,您的 Integer getter/String setter 方法无法工作,因为 String setter 不会被检测为属于 Integer 属性)。

将 setter 方法的参数类型设置为 Integer 它将起作用,转换将自动应用,JavaBeans 通过 PropertyEditor 内置了对值转换的支持接口(interface)(至少所有原始值类型的实现都存在,并且通过自动拆箱,Integer 可以被认为是原始的)。

关于java - JSP自定义标签属性类型整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com