Как удалить значение по умолчанию ('0') в WicketTextField - PullRequest
0 голосов
/ 07 ноября 2011

Здесь я использую компонент текстового поля wicketText, которому сопоставлен тип Integer. Теперь при загрузке страницы я получаю «0» в качестве значения по умолчанию в этом текстовом поле. Как удалить это 0 из текстового поля.

Ответы [ 6 ]

12 голосов
/ 07 ноября 2011

Не используйте int в качестве типа свойства: это не может быть null. Вместо этого используйте Integer.

3 голосов
/ 07 ноября 2011

TextField преобразует значение объекта в модели в String.В случае, если объект null, строка будет пустой.

Возможно, вы используете int, как указал Матрийн.Тип встроенного Java-примитива никогда не может быть null, но по умолчанию 0

Так что используйте Integer.(Или вы можете создать собственный конвертер, но это просто грязно)

0 голосов
/ 14 июня 2016

Попробуйте настроить Converter вашего TextField

public class Converter<C> implements IConverter<C> {

    @Override
    public C convertToObject(String s, Locale locale) throws ConversionException {
        return (C) s;
    }

    @Override
    public String convertToString(C c, Locale locale) {
            Class<? extends Object> aclass = c.getClass();
        if (aclass == Long.class) {
            return ((Long) c != 0) ? String.valueOf(c) : "";
        } else if (aclass == Integer.class) {
            return ((Integer) c != 0) ? String.valueOf(c) : "";
        } else if (aclass == BigDecimal.class) {
            return (!BigDecimal.ZERO.equals(c)) ? String.valueOf(c) : "";
        }
        return c.toString();
    }

}

и затем переопределить значение по умолчанию IConverter

new TextField<BigDecimal>("id") {
    @Override
    public <C> IConverter<C> getConverter(Class<C> type) {
       return new Converter<C>();
    }
}
0 голосов
/ 30 июля 2013

Полагаю, вы можете использовать int вместо Integer.(int не может быть нулевым, а Integer может)

0 голосов
/ 09 апреля 2013

как насчет использования NumberTextField следующим образом NumberTextField numberField = (NumberTextField) new NumberTextField ("numberField", новая модель (10));

0 голосов
/ 01 апреля 2013

Универсальный тип текстового поля должен быть reference.Integer - хороший выбор.Но для хорошего выбора программирования лучше использовать String. Новая модель ("") делает ваше текстовое поле пустым.

 TextField<Integer> a = new TextField<Integer>("id",new Model(""));

вы можете получить целочисленное значение вашего textfield на a.getValue()Метод. Вы можете разобрать такие строки в int с помощью свойства Integer.parseInt(a.getValue());.

TextField<String> a = new TextField<String>("id",new Model(""));
...