首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT.create并包装现有的html元素

GWT.create并包装现有的html元素
EN

Stack Overflow用户
提问于 2015-04-30 16:08:35
回答 2查看 224关注 0票数 2

是否可以使用GWT.create而不是构造函数来创建TextBox,并包装现有的HTML元素?我试过了:

代码语言:javascript
复制
TextBox text=GWT.create(TextBox.class)
text.setElement(DOM.createInput()) (2)

上面的第(2)行失败,并显示“无法设置元素两次...”

我需要它来使用GwtMockito并测试需要创建TextBox的组件。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-04-30 23:07:00

UIObject有一个包保护的replaceElement方法,它可以做你喜欢做的事情。

在正确的包中构建一个包装器,如下所示:

代码语言:javascript
复制
package com.google.gwt.user.client.ui;

import com.google.gwt.dom.client.Element;

public class ElementReplace
{
    public static void replaceElement(UIObject obj, Element elem)
    {
        obj.replaceElement(elem);
    }
}

并且可以访问该方法。

票数 3
EN

Stack Overflow用户

发布于 2015-04-30 22:48:07

看起来你不得不求助于某种工厂:

代码语言:javascript
复制
public interface TextBoxFactory {
    TextBox wrap(Element element);
}

这将被注入到您的视图中,您将使用工厂将现有元素包装在TextBox中。当然,默认实现将只使用TextBox#wrap(Element),正如Baz所建议的那样。出于测试的目的,您将使用一个返回Mockito模拟的实现。

这不是最好的解决方案,但考虑到目前的情况,我想不出一个“干净”的解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29962359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档