2

次のような JSF コンバーター用の基本的なタグ ハンドラーがあります (簡潔にするために、いくつかは省略されています)。

<tag>
    <description>
        <![CDATA[
            Converts a string representation to 
            <code>java.math.BigDecimal</code> based on attribute values given.
        ]]>
    </description>
    <tag-name>convertBigDecimal</tag-name>
    <converter><converter-id>bigDecimalConverter</converter-id></converter>

    <attribute>
        <description>
            <![CDATA[
                <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217 currency code</a> such as INR, USD, GBP, NZD etc.
            ]]>
        </description>
        <name>currency</name>
        <type>java.lang.String</type>
    </attribute>

    <attribute>
        <description>
            <![CDATA[
                A boolean value or flag indicating whether to transform 
                this value to percentage or not. The default is false.
            ]]>
        </description>
        <name>percent</name>
        <type>java.lang.Boolean</type>
    </attribute>

    <attribute>
        <description>
            <![CDATA[
                A boolean value or flag indicating whether to use a 
                currency symbol (such as $) or not. The default is true.
            ]]>
        </description>
        <name>useCurrencySymbol</name>
        <type>java.lang.Boolean</type>
    </attribute>

    <!-- Other attributes. -->
</tag>

いくつかの属性があり、文字列表現を同等java.math.BigDecimalの値に変換java.math.BigDecimalしたり、通貨記号の有無にかかわらず通貨、パーセンテージ、グループ化された数値、分数の小数点以下の桁数などのさまざまな表示形式に変換することを目的としています。

当然のことながら、この例ではパーセンテージと通貨を一緒に使用することはできません。したがって、以下は完全に有効です。

<my:convertBigDecimal currency="#{currencyCode}" groupingUsed="true" locale="#{locale}"/>

ただし、以下は無効であり、実行しようとすると解析エラーが発生することが予想されます。

<my:convertBigDecimal percent="true"
                      currency="#{currencyCode}"
                      useCurrencySymbol="false"
                      groupingUsed="true"
                      locale="#{locale}"/>

たとえば、属性が 、 などのpercent通貨に関連付けられた他の属性と一緒に試行された場合、XML パーサーは解析エラーを発行して、XML ドキュメント自体が解析されないようにする必要があると想定されます。currencyuseCurrencySymbol

関係のない属性を特定のタグと一緒に指定しようとした場合、コンバーターでのいくつかの条件付きテストを省略でき、コンバーターを使用するユーザーまたはアプリケーション開発者がタグで不適切な属性を使用するのが早すぎることに対して警告されますか?

4

1 に答える 1