猿问

数据绑定后ComboBox无法编辑

Google-fu没有透露任何信息,Stackoverflow搜索显示了与我的情况不完全相同的类似问题。男孩,我在这里问很多问题。

这不是考试题,家庭作业题,也不是学校计划或类似项目。因此,请不要打扰您回复这样的评论。那对我没有帮助

简而言之,我将一个项目存储在数据库中:

barcode (bigint)check_out_date (datetime)due_date (datetime)is_available (String: True/False/Null,我想那会比在UI端复选框比DB使用位(1),因为我无法得到正确的结合更容易,更方便。) ,is_late (String: True/False/Null, same reason as above),,name (varchar)notes (varchar)type (varchar)

is_late并且is_available绑定到2个值的组合框(True / False),数据库读取这些值并实际在组合框中显示这些值,但是我无法对其进行编辑。作为参考,我在程序的不同部分中还有另外2个Combobox,但是它们没有绑定,因此可以正常工作。

如何使(组合?)这些组合框可编辑?感谢您的帮助,我很高兴能加入这个社区!

largeQ
浏览 163回答 2
2回答

慕标琳琳

setAvailable并且getIsAvailable不是很好的方法名称,因为它们不匹配。因此,如您所知,使用setIsAvailable或将属性更改为available并使用setAvailable/getAvailable是正确的方法。Vaadin活页夹使用Java PropertyDescriptor查找getter和setter。这只是在大小写属性名称之前添加get或set前缀的一种情况。从源代码is可以看出,如果您使用布尔值,则前缀也可以用于getter 。在这种情况下,你可以有一个布尔属性available,然后setAvailable和isAvailable访问方法。

PIPIONE

我这太尴尬了!原来我的二传手命名不正确..因此能够读取但不能写入。字段和实例数据为“ isAvailable”,因此系统正在寻找InventoryItem.setisAvailable(String available),但该方法名为setAvailable。使用时binder.forField(field).bind(Object::getter, Object::setter),解决方案有效。只需传递您的方法名称即可。 但是,分别在对象的类中binder.forMemberField(field).bind("value")寻找getValue和setValue方法。在这种情况下,您可以选择修改您的getter / setter名称或使用binder.forField
随时随地看视频慕课网APP

相关分类

Java
我要回答