1

我创建了一个编辑器,其中包含一些编辑嵌套字段的子编辑器,但 gwt 抱怨它需要一个 has/setter 方法。

这是我的编辑器代码。CompInfo 类有一个 UIInfo。在 UIInfo 类中,displayName 只是一个字符串。我已经有它的 setter 方法,但它仍然在抱怨。

// top level editors
@UiField @Path("attrName") TextField attributeName;
@UiField @Path("compName") TextField componentName;
@UiField @Path("compInterfaceName") TextField interfaceName;
@UiField @Path("compType") TextField componentType;
@UiField TextField defaultValue;
@UiField @Path("auxData") TextField crossReference;
@UiField BooleanToggleButton nonUserComponent;
@UiField BooleanToggleButton mandatory;
@UiField TextField annotation;
// ui info editor
@UiField @Path("UIInfo.disabled") CheckBox uiDisabled;
@UiField @Path("UIInfo.displayName") TextField uiDisplayName;

以下是错误:

[ERROR] [onboardingtool] - Errors in 'generated://03A84A085FC6AAD2AC9A5323F65AA50F/com/algorithmics/mdc/client/widget/CompInfoEditor_UIInfo_displayName_Context.java'
[ERROR] [onboardingtool] - Line 17: The method hasDisplayName() is undefined for the type String
[ERROR] [onboardingtool] - Line 20: The method setDisplayName(String) is undefined for the type String

这是它生成的代码:

public class CompInfoEditor_UIInfo_displayName_Context extends com.google.gwt.editor.client.impl.AbstractEditorContext<java.lang.String> {
  private final com.algorithmics.uds.dmob.input.CompInfo parent;
  public CompInfoEditor_UIInfo_displayName_Context(com.algorithmics.uds.dmob.input.CompInfo parent, com.google.gwt.editor.client.Editor<java.lang.String> editor, String path) {
    super(editor,path);
    this.parent = parent;
  }
  @Override public boolean canSetInModel() {
    return parent != null && true && parent.getUIInfo() != null && parent.getUIInfo().getDisplayName() != null;
  }
  @Override public java.lang.String checkAssignment(Object value) {
    return (java.lang.String) value;
  }
  @Override public Class getEditedType() { return java.lang.String.class; }
  @Override public java.lang.String getFromModel() {
    return (parent != null && parent.getUIInfo() != null && parent.getUIInfo().getDisplayName() != null) ? parent.getUIInfo().getDisplayName().hasDisplayName() : null;
  }
  @Override public void setInModel(java.lang.String data) {
    parent.getUIInfo().getDisplayName().setDisplayName(data);
  }
}

更新:

我的 UIInfo 类有 setDisplayName、getDisplayName 和 hasDisplayName 方法。这似乎是一个错误,因为当我删除 hasDisplayName 方法时,它可以正常工作。(有人发现这个报告给谷歌了吗?)但 UIInfo 实际上是一个遗留类,我无法删除 hasDisplayName。有什么建议么?或者我应该停止使用编辑器框架?

4

0 回答 0