Vaadin 8 - 网格验证器可以“听到”跨单元格的值

我有列Minimum和MaximumVaadin 8 Grid。这些列是可编辑的。我需要让验证器还相互检查这 2 个值,以便如果在字段中输入的值Maximum小于Minimum该行中的条目值,验证器将发出错误,反之亦然。


代码如下:


grid.addColumn(AuditParams::getMaxAmt, new NumberRenderer())

.setId("max")

.setCaption("Max")

.setEditorBinding(grid

        .getEditor()

        .getBinder()

        .forField(new TextField())

        .withConverter(new StringToFloatConverter("Enter a value greater than 0"))

           .withValidator(v -> v>0.0f, "Must be a positive value")

           .withValidator(v -> v<Constants.MAX_AMT, "Maximum can be "+Constants.MAX_AMT)

        .bind(AuditParams::getMaxAmt, AuditParams::setMaxAmt)

);

如何在 Vaadin 8 中做到这一点?如何将另一个单元格的值传递给验证器?


TIA


//--------------------


我尝试在其他两个验证器之后将以下验证器添加到“max”列:


           .withValidator(v -> v>=((Float)grid.getColumn("min")

               .getEditorBinding().getField().getValue()), 

               "Incorrect range")

这个验证器永远不会传递任何东西 - 总是发出错误“不正确的范围”。


//--------------------


更准确地 - 尝试了以下验证器并且它有效。


           .withValidator(v -> v>=(Float.parseFloat((String)(grid.getColumn("min")

               .getEditorBinding().getField().getValue()))), 

               "Incorrect range")

但是 - 数字以格式显示(,每 3 位数字之间)并且验证器试图将其作为数字读取 - 没有格式。除非我在编辑时去掉那些逗号,否则这仍然会抛出错误。会在另一个 Q 中问这个。


达令说
浏览 125回答 2
2回答

慕村225694

问题中的第二个编辑解决了它。我通过String在传递到parseFloat().&nbsp;完全发挥作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java