Vaadin withNullRepresantation ComboBox <integer>

时间:2018-03-20 23:30:04

标签: java vaadin

我想解决这个问题,从Combobox数字我可以选择空值(意思不是必需的)但是withNullRepresentation(0)是问题因为我想发送到DB号而不是选择的数字为null,因为我稍后在Grid中使用它如果null保存,我希望在列中显示空值,我的意思是如果保存的值为null整数(或int 0)在网格中转换为空字符串...我做愚蠢的黑客,如果没有选择值,我可以Vaadin转换类似IntegerToStringConverter的东西解析从数据库到网格的空整数,如空字符串?

1 个答案:

答案 0 :(得分:1)

withNullRepresentation适用于数据库中可能包含null值的情况,但您不希望将这些null值传递给组件。 ComboBox通常不是这种情况,其中null与空选择相同。

因此,我建议在绑定withNullRepresentation时不要使用ComboBox。如果ComboBox.setEmptySelectionCaption(String)的默认设置不适合您的情况,您可以使用""配置向用户显示空选择的方式。

然后当你想要显示例如在Grid中,您可以为该列配置如何处理该值。使用grid.addColumn(item -> item.getNumber()之类的内容配置列时,Grid会在内部执行类似String.valueOf(value)的操作以实际显示值。这会导致null值显示为"null"

解决此问题的一种方法是以一种以不同方式处理null值的方式明确地执行字符串转换,例如: grid.addColumn(item -> Objects.toString(item.getNumber(), ""))。另一种方法是将列配置为使用NumberRenderer,默认情况下将空值表示为""。您可以grid.addColumn(item -> item.getNumber(), new NumberRenderer())

执行此操作