2

10 進数値に入力テキストを使用するときはいつでも、次のようにします。

<h:inputText id="valMin" tabindex="4" required="false"
    maxlength="10" styleClass="valorMinimoMaximo"
    value="#{actionGeneralidadeUnidadeCalculo.valorMinimoTransiente}"
    size="10" label="ValorMinimo">
</h:inputText>

は文字valorMinimoTransiente列であり、アクションに移動するときに に変換しBigDecimalます。

これを行うのは、10 進数にドットの代わりにコンマが含まれているためで、次のようなものを変換しようとすると

4,56

BigDecimal、例外を与えます。

BigDecimalでは、このプロセス全体なしで値を取得する方法はありますか?

ちなみに、私はjsf 1.2とrichfaces 3.3.3を実行しています。

4

1 に答える 1

2

うわぁ!WebSphere Application Server v6.1 などの古いアプリケーション サーバーで JSF 1.2 を使用することを余儀なくされているようです。

標準の BigDecimalConverter のいずれかを使用できます。

<f:converter converterId="javax.faces.BigDecimal" />

ただし、必要に応じて、そのコンバーターが制限される場合があります。その場合は、独自のカスタム コンバーターを作成することをお勧めします。

それでは、独自のコンバーター クラスを作成する方法を読んでください。

コンバーター クラスを作成します。

import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("bigDecimalConverter")
public class BigDecimalConverter implements Converter {
    ...override and implement the required interface methods here
}

カスタム コンバーターを使用するには、次のいずれかを使用できます。

<h:inputText value="#{someBean.field}" converter="bigDecimalConverter"/>

また:

<h:inputText value="#{someBean.field}">
    <f:converter converterId="bigDecimalConverter"/>
</h:inputText>

私は長い間 JSF 1.2 を使用していませんが、アノテーションが JSF 2.0 規則である可能性があります。その場合は、昔ながらの方法でカスタム コンバーターを登録する必要があります: faces-config.xml:

<converter>
    <description>
        Some description here (optional)
    </description>
    <converter-id>bigDecimalConverter</converter-id>
    <converter-class>
        com.companyname.project.converters.BigDecimalConverter
    </converter-class>
</converter>

参考文献:

Java EE 5 BigDecimalConverter

カスタム コンバーターの登録

Java EE 5 標準コンバーター

于 2015-03-19T20:34:06.920 に答える