这里我使用了一个整数类型映射到的wicketText Textfield组件,现在加载页面时iam在该文本字段中将'0'作为默认值。如何从文本字段中删除该0。
答案 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)
文本字段的泛型类型应为reference
。 Integer
是不错的选择。但是对于一个好的编程选择,最好使用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(""));