1

I am using validation in GWT. I am having textbox. In that field it accepts only whole numbers and decimal values not other than special characters . I used regex pattern "[0-9*]" but it does not accept decimal values. Can you give me one solution

Thanks in advance.

4

4 回答 4

2

您必须继承 textBox 并处理子类中的转换。即创建一些“BigDecimalBox”。然后在要验证的对象中使用它。

private static final String MIN_VALUE = "0.00";
private static final String MAX_VALUE = "99999.99";
@DecimalMax(value = MAX_VALUE)
@DecimalMin(value = MIN_VALUE)
private BigDecimal mortgage;

避免对十进制值使用双精度。这是一个众所周知的 Java 陷阱,如果您是企业开发人员,这是一个禁忌!默认情况下,IMO GWT 应提供 BigDecimalBox。

于 2013-09-18T07:25:15.903 回答
1

GWT 具有用于输入数字的树特定文本框: IntegerBoxLongBoxDoubleBox

这些文本框将验证输入文本的格式并返回整数、长整数或双精度值。

于 2013-09-18T09:36:24.017 回答
0

我知道这是旧的,但我有同样的问题。

我在 com.github.gwtbootstrap.client.ui 包中找到了 GWT Bootstrap 的 BigDecimalBox。它提供了一个 BigDecimalRenderer(用于显示)和一个 BigDecimalParser(用于解析)。

https://gwtbootstrap.github.io/

于 2015-05-25T18:37:30.157 回答
0

您需要检查用户按下的键并防止处理无效键。我通过继承 IntegerBox 并使用 KeyDownHandler 来验证适当的情况来完成此操作。这是完整的课程。

public class IntegerTextBox extends IntegerBox {

public IntegerTextBox() {
    super();
}

public void initialize() {

    addKeyDownHandler(new KeyDownHandler() {
        public void onKeyDown(KeyDownEvent event) {
            int keyCode = event.getNativeKeyCode();

            if (event.isAnyModifierKeyDown())
                cancelKey();

            switch (keyCode) {
                case KeyCodes.KEY_LEFT:
                case KeyCodes.KEY_RIGHT:
                case KeyCodes.KEY_DELETE:
                case KeyCodes.KEY_BACKSPACE:
                case KeyCodes.KEY_ENTER:
                case KeyCodes.KEY_ESCAPE:
                case KeyCodes.KEY_TAB:
                    return;
            }

            String parsedInput = parseNumberKey(keyCode);
            if (parsedInput.length() > 0) {
                return;
            }
            else {
                cancelKey();
            }

        }
    });
}

/**
 * Varifies that the key pressed is either a number key or a numeric pad key. Converts numeric pad keys to the string
 * representation of their number values.
 *  
 * @param keyCode - the key code.
 * @return the key's number representation as a string.
 */
@SuppressWarnings("nls")
private String parseNumberKey(int keyCode) {
    String result = new String();

    switch (keyCode) {
    case KeyCodes.KEY_ZERO:
    case KeyCodes.KEY_ONE:
    case KeyCodes.KEY_TWO:
    case KeyCodes.KEY_THREE:
    case KeyCodes.KEY_FOUR:
    case KeyCodes.KEY_FIVE:
    case KeyCodes.KEY_SIX:
    case KeyCodes.KEY_SEVEN:
    case KeyCodes.KEY_EIGHT:
    case KeyCodes.KEY_NINE:
        return result = String.valueOf((char) keyCode);            
    case KeyCodes.KEY_NUM_ZERO:
        return result = "0";
    case KeyCodes.KEY_NUM_ONE:
        return result = "1";
    case KeyCodes.KEY_NUM_TWO:
        return result = "2";
    case KeyCodes.KEY_NUM_THREE:
        return result = "3";
    case KeyCodes.KEY_NUM_FOUR:
        return result = "4";
    case KeyCodes.KEY_NUM_FIVE:
        return result = "5";
    case KeyCodes.KEY_NUM_SIX:
        return result = "6";
    case KeyCodes.KEY_NUM_SEVEN:
        return result = "7";
    case KeyCodes.KEY_NUM_EIGHT:
        return result = "8";
    case KeyCodes.KEY_NUM_NINE:
        return result = "9";
    }
    return result;
}

}
于 2015-08-26T21:01:37.843 回答