Java 如何在GWT UiBinder中引用小部件?

Java 如何在GWT UiBinder中引用小部件?,java,gwt,uibinder,Java,Gwt,Uibinder,是否可以引用UiBinder创建的小部件并将其传递给*.ui.xml文件中其他小部件的设置程序? 我尝试了以下代码来创建一个标签(CustomLabel),它可以侦听和跟踪表单小部件的状态(CustomWidget)。问题是GWT编译失败,原因是: [ERROR] Exception in thread "main" java.lang.StackOverflowError [ERROR] at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java

是否可以引用UiBinder创建的小部件并将其传递给*.ui.xml文件中其他小部件的设置程序?

我尝试了以下代码来创建一个标签(
CustomLabel
),它可以侦听和跟踪表单小部件的状态(
CustomWidget
)。问题是GWT编译失败,原因是:

[ERROR] Exception in thread "main" java.lang.StackOverflowError
[ERROR]     at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:691)
[ERROR]     at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:579)
[ERROR]     at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271)
[ERROR]     at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
[ERROR]     at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
[ERROR]     at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
[ERROR]     at java.io.BufferedWriter.flush(BufferedWriter.java:253)
[ERROR]     at java.io.PrintWriter.newLine(PrintWriter.java:482)
[ERROR]     at java.io.PrintWriter.println(PrintWriter.java:629)
[ERROR]     at java.io.PrintWriter.println(PrintWriter.java:740)
[ERROR]     at com.google.gwt.dev.util.log.PrintWriterTreeLogger.doLog(PrintWriterTreeLogger.java:79)
[ERROR]     at com.google.gwt.dev.util.log.PrintWriterTreeLogger.doCommitBranch(PrintWriterTreeLogger.java:65)
[ERROR]     at com.google.gwt.dev.util.log.AbstractTreeLogger.commitMyBranchEntryInMyParentLogger(AbstractTreeLogger.java:256)
[ERROR]     at com.google.gwt.dev.util.log.AbstractTreeLogger.branch(AbstractTreeLogger.java:167)
[ERROR]     at com.google.gwt.core.ext.TreeLogger.branch(TreeLogger.java:212)
[ERROR]     at com.google.gwt.editor.rebind.model.EditorModel.createEditorData(EditorModel.java:381)
[ERROR]     at com.google.gwt.editor.rebind.model.EditorModel.createEditorData(EditorModel.java:390)
[ERROR]     at com.google.gwt.editor.rebind.model.EditorModel.createEditorData(EditorModel.java:390)
View.ui.xml:


View.java:

@UiField
CustomWidget customWidget; 
@UiField
自定义小部件;
CustomLabel.java:

public void setfortargeted(CustomWidget forTarget){
this.forTarget=forTarget
}

原则上这应该是可行的。我在代码中使用了类似的引用

在your View.java中:

@UiField
CustomWidget customWidget; 
应该是

@UiField
CustomWidget widget;

不,您不能这样做-当UiBinder调用您的
setForTarget
方法时,还没有可用的小部件


您可以在自定义小部件初始化后在代码中调用此方法。

谢谢您的快速回答。实际上,我在hello world大小的项目中成功地使其工作。同样感谢你的输入错误,我会解决这个问题。事实证明,使用花括号引用小部件是可行的。上面stacktrace的错误与
IsEditor
接口的错误实现有关。