我有一个数据类型为Integer的TextField,因此我尝试使用getFieldValue()并将其写入Integer字段。所以在运行时我在这里有一个错误:
TextField<Integer> priceField = new TextField<Integer>();
Integer newPriceFieldValue = priceField.getValue(); //here is an error in runtime
所以我无法理解最新的问题 - proceField.getValue()应该是Integer,为什么是字符串?也许我应该使用其他类型的Field?
java.lang.ClassCastException:java.lang.String无法强制转换为 为java.lang.Integer 在 ru.braginini.client.ProductForm $ 2.componentSelected(ProductForm.java:64) 在 ru.braginini.client.ProductForm $ 2.componentSelected(ProductForm.java:1)
答案 0 :(得分:3)
如果您希望此字段中只使用数字NumberField可能是更好的选择。
NumberField field = new NumberField();
field.setPropertyEditorType(Integer.class);
它将确保只输入数字,并保存一些铸造&amp; getValue()调用的错误处理。
答案 1 :(得分:0)
getValue返回一个String! 您希望将此String分配给导致CastException的Integer(就像在任何面向类型的编程语言中一样。
尝试
Integer newPriceFieldValue = Integer.parseInt(priceField.getValue());
此致 斯蒂芬