setValue в MDoubleBox не работает с разделителями Grouping/Decimal

Я использую виджеты MDoubleBox в своем приложении mgwt, но у меня возникают проблемы с инициализацией значений с помощью метода setValue (применяется также для setText).

Любые двойные значения, которые внутренне разобраны на содержащие группирующие или десятичные разделители (т. е. содержащие десятичное число или большее 999), терпят неудачу, если предоставляются в качестве параметра, дающего пустое значение. Соответствующий gwt DoubleBox работает нормально. В настоящее время я запускаю это в локали, отличной от локали по умолчанию, но тот же результат происходит и для локали США.

Я мог бы использовать MTextBox в качестве обходного пути, если бы был способ заставить цифровую клавиатуру появляться для пользователей, вводящих данные для этих полей. Здесь?

Что я пропустил в отношении использования MDoubleBox?

.ui.xml:

    <mgwt:input.MDoubleBox ui:field="field1"/>
    <gwt:DoubleBox ui:field="field2"/>

код:

    @UiField MDoubleBox field1;
    @UiField DoubleBox field2;

    field1.setValue(1234.56);
    field2.setValue(1234.56);

Выход:

<blank>
1,234.56

person Mike Winter    schedule 15.04.2015    source источник


Ответы (1)


Это потому, что DoubleBox на самом деле <input type="text">, так что "1,234.56" в порядке. Но MDoubleBox - это <input type="number">, и они гораздо более строгие и не позволяют использовать символ ,, созданный NumberFormat.getDecimalFormat().format(object) в DoubleRenderer.

Десятичные числа принимаются, и вы можете настроить их.

Чтобы решить эту проблему, вам придется копаться внутри MDoubleBox и использовать другой SDoubleBox, чтобы избежать использования DoubleRenderer.

Изменить: я отправил pull request для MGWT, вы можете посмотреть на него, чтобы помочь ты исправь это.

person grebesche    schedule 15.04.2015
comment
Сладкий. Я начну копать. - person Mike Winter; 16.04.2015