我正在使用recommended API from their docs在我的第一个GWT应用中实现MVP,并且无可否认,我正在做一些cargo cult programming,同时争先恐后地学习/理解API:
public class DefaultSignInView extends Composite implements SignInView {
private static DefaultSignInViewUiBinder uiBinder = GWT
.create(DefaultSignInViewUiBinder.class);
public DefaultSignInView() {
// ERROR: The method initWidget(Widget) in the type Composite is not applicable
// for the arguments (DivElement)
initWidget(uiBinder.createAndBindUi(this));
}
// Extends the UiBinder interface for this particular view.
interface DefaultSignInViewUiBinder extends UiBinder<DivElement, DefaultSignInView> {
// No-op.
}
}
在上面的代码段中,对initWidget
的调用是语法/编译器错误:
Composite类型的方法initWidget(Widget)不适用于参数(DivElement)。
现在,在文档(上面链接)中,它们表明您应该在没有泛型参数的情况下扩展UiBinder
。但是我也看过使用泛型的例子,再次,货物结果,我借用了另一个使用DivElement
作为第一个参数的例子。所以,有几个问题:
DivElement
改为(或者我还需要改变什么)来纠正它,除了删除泛型参数?如果泛型参数被弃用或真正不再使用,有人可以解释原因吗?在这种情况下,我只会@SuppressWarnings
。提前致谢!
答案 0 :(得分:0)
我真诚地认为你在找错了地方。试试这个here。其中大部分都是在文档中解释的,我仍然会尝试强调几点,
我在下面添加了我的示例代码
public class ImageViewer implements EntryPoint
{
@Override
public void onModuleLoad()
{
SampleUI sampleUI = new SampleUI();
sampleUI.setNameSpan(" Trying it out!!");
Document.get().getBody().appendChild(sampleUI.getElement());
}
}
SampleUI ui-binder
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder">
<ui:style>
.important {
font-weight: bold;
}
</ui:style>
<div>
Hello,
<span class="{style.important}" ui:field="nameSpan" />
</div>
</ui:UiBinder>
SampleUI java
public class SampleUI extends UIObject
{
private static SampleUIUiBinder uiBinder = GWT.create(SampleUIUiBinder.class);
interface SampleUIUiBinder extends UiBinder<DivElement, SampleUI>
{
}
private DivElement root;
@UiField
SpanElement nameSpan;
public SampleUI()
{
setElement(uiBinder.createAndBindUi(this));
}
public DivElement getRoot()
{
return root;
}
public void setNameSpan(String firstName)
{
nameSpan.setInnerText(firstName);
}
}