Textbox仅允许gwt中的十进制值和数字
我正在GWT中使用验证。我有一个文本框。在该字段中,它只接受整数和十进制值,而不接受特殊字符。我使用了正则表达式模式“[0-9*]”,但它不接受十进制值。你能给我一个解决办法吗Textbox仅允许gwt中的十进制值和数字,gwt,Gwt,我正在GWT中使用验证。我有一个文本框。在该字段中,它只接受整数和十进制值,而不接受特殊字符。我使用了正则表达式模式“[0-9*]”,但它不接受十进制值。你能给我一个解决办法吗 提前感谢。您必须对textBox进行子类化,并在子类中处理转换。例如,创建一些“大小数框”。 然后在将要验证的对象中使用它 private static final String MIN_VALUE = "0.00"; private static final String MAX_VALUE = "99999.99";
提前感谢。您必须对textBox进行子类化,并在子类中处理转换。例如,创建一些“大小数框”。 然后在将要验证的对象中使用它
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;
避免对十进制值使用double。如果你是一个企业开发人员,这是不可能的!IMO GWT默认情况下应提供一个BigDecimalBox。GWT具有特定于树的文本框,用于输入数字: ,及
这些文本框将验证输入文本的格式,并返回整型、长型或双精度值。我知道这很旧,但我有同样的问题 我在com.github.gwtbootstrap.client.ui包中找到了GWT引导的BigDecimalBox。它提供了一个BigDecimalRenderer(用于显示)和一个BigDecimalParser(用于解析)
您需要检查用户按下的键,并防止处理无效键。我通过子类化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;
}
}
请看,对十进制值使用double是不明智的。查看此帖子了解详细信息。好观点@otonglet。我错过了这一部分。在这种情况下,我认为最好扩展
ValueBox
,而不是像DoubleBox那样扩展普通的TextBox
。