2

私の GWT Web アプリケーションには、価格を保持するテキスト ボックスがあります。その文字列を BigDecimal に変換するにはどうすればよいですか?

4

2 に答える 2

9

最も簡単な方法は、ValueBox を継承する新しいテキスト ボックス ウィジェットを作成することです。このようにすると、文字列値を手動で変換する必要がなくなります。ValueBox がすべて処理します。

入力された BigDecimal 値を取得するには、次のようにします。

BigDecimal value = myTextBox.getValue();

あなたのBigDecimalBox.java :

public class BigDecimalBox extends ValueBox<BigDecimal> {
  public BigDecimalBox() {
    super(Document.get().createTextInputElement(), BigDecimalRenderer.instance(),
        BigDecimalParser.instance());
  }
}

次に、BigDecimalRenderer.java

public class BigDecimalRenderer extends AbstractRenderer<BigDecimal> {
  private static BigDecimalRenderer INSTANCE;

  public static Renderer<BigDecimal> instance() {
    if (INSTANCE == null) {
      INSTANCE = new BigDecimalRenderer();
    }
    return INSTANCE;
  }

  protected BigDecimalRenderer() {
  }

  public String render(BigDecimal object) {
    if (null == object) {
      return "";
    }

    return NumberFormat.getDecimalFormat().format(object);
  }
}

そしてあなたのBigDecimalParser.java

package com.google.gwt.text.client;

import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.text.shared.Parser;

import java.text.ParseException;

public class BigDecimalParser implements Parser<BigDecimal> {

  private static BigDecimalParser INSTANCE;

  public static Parser<BigDecimal> instance() {
    if (INSTANCE == null) {
      INSTANCE = new BigDecimalParser();
    }
    return INSTANCE;
  }

  protected BigDecimalParser() {
  }

  public BigDecimal parse(CharSequence object) throws ParseException {
    if ("".equals(object.toString())) {
      return null;
    }

    try {
      return new BigDecimal(object.toString());
    } catch (NumberFormatException e) {
      throw new ParseException(e.getMessage(), 0);
    }
  }
}
于 2012-05-03T04:18:13.427 に答える
1

GWT-Mathを見てください。

于 2012-05-02T12:27:01.303 に答える