ロケールが fr に設定されている GWT プロジェクトがあります。数値入力の検証と書式設定に数値書式を使用するカスタム テキスト フィールドがあります。
フォーマットは正常に機能しますが、入力の検証は機能しません。新しい値が有効なパーセンテージであることを検証するメソッドのスナップショットを次に示します (これは onValueChanged と呼ばれます)。
private void validateNumber(String newVal){
logger.debug("value changed, newVal="+newVal+", current="+current);
// Attempt to parse value
double val=0;
try{
val=Double.parseDouble(newVal);
}catch(NumberFormatException e){
logger.warn("parsing failed",e);
try{
val=getFormatter().parse(newVal);
}catch(NumberFormatException ex){
logger.warn("parsing with nb format failed",ex);
// on failure: restore previous value
setValue(current,false);
return;
}
}
//some check on min and max value here
}
たとえば、プログラムによって開始値が「0.2」に設定されている場合、20,00 % と表示されるため、正しい小数点記号が使用されます。今:
- 0,1 を入力すると、numberformat 例外が発生します。
- 0.1 を入力すると、10,00 % と表示されます
- 10% (「%」の前のスペースなし) の場合、numberformat 例外が発生します。
0、1、および 10% が有効な入力として識別されるようにメソッドを変更する方法を知っていますか?