1

カスタムタグライブラリを作成したいのですが、ハンドラークラスに整数属性が必要です。

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ファイルで属性タイプを指定していません。デフォルトでは文字列である必要があります。このようなエラーが発生しますが:

Unable to find setter method for attribute: x

また、属性タイプを次のように変更し<type>java.lang.Integer</type>、setterメソッドを次のように変更してみました。

public void setX(int x) {
    } 

そして、私は同じエラーを受け取ります。

セッターエラーが発生しないように、tldファイルの属性とハンドラークラスのセッターをどのように定義すればよいですか?

4

1 に答える 1

4

JSP カスタム タグは、標準的な規則を持つJavaBeansテクノロジを使用します (主な側面を捉えた小さな JavaBeans チュートリアルを次に示します)。

「bean プロパティ」 (「参考文献」を参照PropertyDescriptor) は、同じタイプのgetterおよび / またはsetterメソッドで構成されます (getter の戻り値の型は、setter の単一パラメーターの型と一致する必要があります)。それ以外の場合、それらは同じ Bean プロパティにマップされません (Iクラスの最初のメソッドが「勝つ」と推測しています)。したがって、整数ゲッター/文字列セッターのアプローチは機能しません。文字列セッターは整数プロパティに属していると検出されないためです)。

setter メソッドのパラメーターの型を に設定するIntegerと機能し、変換が自動的に適用されます。JavaBeans には、PropertyEditorインターフェースを介した値の変換のサポートが組み込まれています (少なくともすべてのプリミティブ値型の実装が存在し、自動アンボックス化により、Integer原始的と見なすことができます)。

于 2011-10-23T19:35:13.247 に答える