Java 使用UiBinder的GWT项目结构

Java 使用UiBinder的GWT项目结构,java,gwt,uibinder,Java,Gwt,Uibinder,如果我有以下类com.mywebapp.client.ui.MyWidget: public class MyWidget extends Composite { interface MyWidgetUiBinder extends UiBinder<Widget, MyWidget>{} private static MyWidgetUiBinder uiBinder = GWT.create(MyWidgetUiBinder.class); ... }

如果我有以下类
com.mywebapp.client.ui.MyWidget

public class MyWidget extends Composite {
    interface MyWidgetUiBinder extends UiBinder<Widget, MyWidget>{}
    private static MyWidgetUiBinder uiBinder = GWT.create(MyWidgetUiBinder.class);

    ...
}
公共类MyWidget扩展了复合{
接口MyWidgetUiBinder扩展UiBinder{}
私有静态MyWidgetUiBinder uiBinder=GWT.create(MyWidgetUiBinder.class);
...
}
这是对应的UiBinder:

<!-- MyWidgetUiBinder.ui.xml -->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <!-- ... -->
</ui:UiBinder>

然后:

  • MyWidgetUiBinder.ui.xml
    ?GWT是否允许您对其进行配置,或者是否要求您将其放置在特定的位置
  • UiBinder代码段的粒度应该如何?对于每个小部件?对于每个显示区域?每页/屏幕1个
  • 提前谢谢

  • MyWidgetUiBinder.ui.xml放在哪里(哪个包或文件夹)?GWT是否允许您对其进行配置,或者是否要求您将其放置在特定的位置
  • GWT要求ui.xml文件与.java文件位于同一文件夹(源文件夹)中。如果您使用用于eclipse的GWT插件,它将在文件不存在时发出警告。如果确实需要,还可以使用界面上的
    @UiTemplate
    注释(
    MyWidgetUiBinder
    )指定不同的位置

  • UiBinder代码段的粒度应该如何?对于每个小部件?对于每个显示区域?每页/屏幕1个

  • 那要看情况了。我喜欢从每页一个UiBinder开始,然后将可重复使用的部分从中分离出来。

    UiBinder在与该类相同的包中查找一个以接口的封闭类命名的文件(如果有,则以接口名称命名)

    在您的例子中,它将查找
    com/mywebapp/client/ui/MyWidget.ui.xml

    这是默认设置,可以使用
    @UiTemplate
    覆盖。看


    至于粒度,UiBinder模板应该保留一个小部件的实现细节。

    谢谢@logan(+1)-(1)如果我有
    src/java/com.mywebapp.client.ui.MyWidget
    ,然后是
    src/xml/gwt/ui binders/mywidgetuibder.ui.xml
    ?我可以使用
    @UiTemplate
    ?(2)你关于粒度的回答与这个问题的另一个答案相冲突。我确信它是主观的,并且是特定于应用程序的,但是你能谈谈你的策略是如何比“1-UiBinder-per-Widget”策略更适合你的吗?再次感谢!托马斯在谷歌工作。他知道他在说什么。你肯定需要每个小部件一个UiBinder,我只是主张每个页面一个小部件作为起点。谢谢@Thomas Broyer(+1)-你介意我问你为什么喜欢“每个小部件一个UiBinder”策略,而不是使用UiBinder来布局页面的主要部分,然后将显示区域的细节委托给面板和小部件吗?我只是好奇这两种策略都能带来什么好处。再次感谢!我敢打赌,“页面的主要部分”最终将成为一个包含其他小部件的小部件(您将其推入
    SimplePanel
    s等);然后可以使用UiBinder定义容器小部件的内部/布局,但这是一个实现细节:从外部看,它只是一个包含其他小部件的小部件。箱子造好了。