2

我一直在使用 GWT MVP 框架 + GWT Editors 框架处理一些小项目。我有视图接口,其字段声明如下:

 @Path("field")
 IsEditor<ValueBoxEditor<Long>> getField();

视图实现如下所示:

@UiField
   IsEditor<ValueBoxEditor<Long>> field;
public IsEditor<ValueBoxEditor<Long>> getField(){
   return field;
}

在我的活动中,我有对应视图的参考,当我必须做(在活动中)这样的事情时:

view.getField.setEnable(true);

我必须做演员

((ValueBoxBase<Long>)view.getField()).setEnable(true);

之后我无法测试这个单元,因为在我的测试中我定义了 View 的行为以返回 Mock(IsEditor<ValueBoxEditor<Long>>)作为view.getFiled()结果我得到:

java.lang.ClassCastException: com.google.gwt.editor.client.IsEditor$
$EnhancerByMockitoWithCGLIB$$e8c00c36 cannot be cast to
com.google.gwt.user.client.ui.ValueBoxBase

从 Activity 调用 Views 组件方法而不进行强制转换的最佳实践是什么?

4

2 回答 2

0

您需要使用 ValueBoxEditor 适配器方法“of”:

@UiField ValueBoxBase<Long> field;

public ValueBoxEditor<Long> getField(){
   return ValueBoxEditor.of(field);
}
于 2011-07-12T21:13:02.403 回答
0

转换为 HasEnabled 而不是 ValueBoxBase。

于 2011-04-15T08:38:22.433 回答