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

标签 java jsp attributes custom-tags

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

在 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/

相关文章:

jquery - 将 JSON 从操作类传递到 JSP,而不在 struts 中使用 Ajax

jquery - 如何使用 jQuery 和 jsp 生成动态下拉列表?

mysql - Magento 使用 SQL 查询更新所有产品制造商

java - Android工具栏设计

java - 如何实现 SharedPreferences?

java - 不允许非成员(member)显示jsp页面

javascript - 使用 html 自定义属性值将类名添加到 html 元素

JavaFX 三态复选框

java - 每分钟有两个节点淡入和淡出

java - 无法加载主类 list 属性