Eclipse Scout Neon ListBox:execValidateValue(..) 不工作
Eclipse Scout Neon ListBox: execValidateValue(..) not working
我在新版 Neon Scout 中有列表框,我想验证设置的值。
我已经实现了execValidateValue
方法:
@Override
protected Set<String> execValidateValue(final Set<String> rawValue) {
if (rawValue.contains(CONSTANT.UNKNOWN)) {
final Set<String> unknownSet = new HashSet<String>();
unknownSet.add(CONSTANT.UNKNOWN);
return super.execValidateValue(unknownSet);
}
return super.execValidateValue(rawValue);
}
但它没有接缝有任何效果。在调试时,我看到在 setValue(VALUE rawValue)
内部方法 updateDisplayText(validatedValue)
是用正确的字符串列表调用的。
这是为什么?是不是我做错了什么?
马尔科
你是对的...如果按照 JavaDoc 的建议在验证过程中(在 execValidateValue(VALUE rawValue)
中)更改了值,则该值会正确存储在 Scout 模型中,但更改不会反映在HTML-UI.
在 Samuel Renold 的帮助下,我已经询问了团队:HTML-UI 将得到修复以反映 UI 中的变化。参见 bug 493778。
演示小部件应用程序的测试代码。更改ListBoxForm
中的DefaultField
。
@Order(20)
public class DefaultField extends AbstractListBox<Color> {
@Override
protected Class<? extends ICodeType<?, Color>> getConfiguredCodeType() {
return ColorsCodeType.class;
}
@Override
protected Set<Color> execValidateValue(Set<Color> rawValue) {
System.out.println(">> execValidateValue");
printColors(rawValue);
if (rawValue != null && rawValue.contains(Color.RED)) {
return super.execValidateValue(Collections.singleton(Color.RED));
}
return super.execValidateValue(rawValue);
}
private void printColors(Set<Color> rawValue) {
if (rawValue != null) {
for (Color color : rawValue) {
System.out.print(color + ", ");
}
System.out.println("");
}
else {
System.out.println("null");
}
}
@Override
protected void execChangedValue() {
System.out.println(">> execValidateValue");
printColors(getValue());
}
@Override
protected int getConfiguredGridH() {
return 5;
}
@Override
protected String getConfiguredLabel() {
return TEXTS.get("Default");
}
}
错误行为也可以在 Scout 4 中重现(此版本已停产)
我在新版 Neon Scout 中有列表框,我想验证设置的值。
我已经实现了execValidateValue
方法:
@Override
protected Set<String> execValidateValue(final Set<String> rawValue) {
if (rawValue.contains(CONSTANT.UNKNOWN)) {
final Set<String> unknownSet = new HashSet<String>();
unknownSet.add(CONSTANT.UNKNOWN);
return super.execValidateValue(unknownSet);
}
return super.execValidateValue(rawValue);
}
但它没有接缝有任何效果。在调试时,我看到在 setValue(VALUE rawValue)
内部方法 updateDisplayText(validatedValue)
是用正确的字符串列表调用的。
这是为什么?是不是我做错了什么?
马尔科
你是对的...如果按照 JavaDoc 的建议在验证过程中(在 execValidateValue(VALUE rawValue)
中)更改了值,则该值会正确存储在 Scout 模型中,但更改不会反映在HTML-UI.
在 Samuel Renold 的帮助下,我已经询问了团队:HTML-UI 将得到修复以反映 UI 中的变化。参见 bug 493778。
演示小部件应用程序的测试代码。更改ListBoxForm
中的DefaultField
。
@Order(20)
public class DefaultField extends AbstractListBox<Color> {
@Override
protected Class<? extends ICodeType<?, Color>> getConfiguredCodeType() {
return ColorsCodeType.class;
}
@Override
protected Set<Color> execValidateValue(Set<Color> rawValue) {
System.out.println(">> execValidateValue");
printColors(rawValue);
if (rawValue != null && rawValue.contains(Color.RED)) {
return super.execValidateValue(Collections.singleton(Color.RED));
}
return super.execValidateValue(rawValue);
}
private void printColors(Set<Color> rawValue) {
if (rawValue != null) {
for (Color color : rawValue) {
System.out.print(color + ", ");
}
System.out.println("");
}
else {
System.out.println("null");
}
}
@Override
protected void execChangedValue() {
System.out.println(">> execValidateValue");
printColors(getValue());
}
@Override
protected int getConfiguredGridH() {
return 5;
}
@Override
protected String getConfiguredLabel() {
return TEXTS.get("Default");
}
}
错误行为也可以在 Scout 4 中重现(此版本已停产)