java - 在 GWT 中将字符串转换为 BigDecimal

标签 java gwt bigdecimal

在我的 GWT Web 应用程序中,我有一个包含价格的文本框。 如何将该 String 转换为 BigDecimal?

最佳答案

最简单的方法是创建继承 ValueBox 的新文本框小部件。 如果您这样做,则无需手动转换任何字符串值。 ValueBox 负责处理这一切。

要获取输入的 BigDecimal 值,您可以:

BigDecimal 值 = 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);
    }
  }
}

关于java - 在 GWT 中将字符串转换为 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413645/

相关文章:

java - 如何在gwt的框架中显示一个html页面

Ruby 大十进制小数点后有 2 个数字

java - 为什么当所有任务都执行完后我总是得到空值

java - 我正在寻找全部大写且有空格的单词

java - 我合并两个已排序数组有什么问题吗?

java - 在原始类型和引用类型之间如何使用“==”相等运算符?

css - GWT 错误!?添加 CSS "position: absolute"时 ClickHandler 未触发

java - 大海捞针阵列针

gwt - GUI 平台选择 : Google GWT, SmartGWT、ExtGWT 和 SmartClient

java - 从 Java 方法返回时,BigDecimal 不保留实际值