如何在WicketTextField中删除默认值('0')

时间:2011-11-07 05:35:55

标签: wicket

这里我使用了一个整数类型映射到的wicketText Textfield组件,现在加载页面时iam在该文本字段中将'0'作为默认值。如何从文本字段中删除该0。

6 个答案:

答案 0 :(得分:12)

不要将int用作属性类型:不能是null。请改用Integer

答案 1 :(得分:3)

TextField将模型中对象的值转换为String。如果对象是null,则String将为空。

你可能正在使用int,正如Matrijn指出的那样。 java内置基元类型永远不能是null,但默认为0

所以请使用Integer。 (或者你可以创建一个自定义转换器,但这只是凌乱)

答案 2 :(得分:0)

如何使用这样的NumberTextField   NumberTextField numberField =(NumberTextField)new NumberTextField(“numberField”,                 新模型(10));

答案 3 :(得分:0)

我相信你可能正在使用int而不是Integer。 (int不能为null,而Integer可以)

答案 4 :(得分:0)

尝试自定义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>();
    }
}

答案 5 :(得分:-2)

文本字段的泛型类型应为referenceInteger是不错的选择。但是对于一个好的编程选择,最好使用String。新模型(“”)使你的文本字段为空。

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

您可以通过textfield方法获取a.getValue()的整数值。您可以通过Integer.parseInt(a.getValue());属性将这些字符串解析为int。

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