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是否允许您对其进行配置,或者是否要求您将其放置在特定的位置@UiTemplate
注释(MyWidgetUiBinder
)指定不同的位置
那要看情况了。我喜欢从每页一个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定义容器小部件的内部/布局,但这是一个实现细节:从外部看,它只是一个包含其他小部件的小部件。箱子造好了。