我创建了一个编辑器,其中包含一些编辑嵌套字段的子编辑器,但是gwt抱怨它需要一个has / setter方法。
这是我的编辑器代码。 CompInfo类有一个UIInfo。在UIInfo类中,displayName只是一个String。我已经有了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方法。 这似乎是一个bug,因为当我删除hasDisplayName方法时,它可以正常工作。 (有人发现这个报告给google吗?)但是UIInfo实际上是一个遗留类,我无法删除hasDisplayName。有什么建议?或者我应该停止使用Editor Framework吗?