GWT:如何使用UIBinder在小部件中嵌入小部件

时间:2011-02-26 16:35:44

标签: gwt uibinder

我想在UIBinder中使用以下内容,以便我可以在代码中以编程方式设置链接的href

<g:HTMLPanel>
    <g:Anchor ui:field="link">
         <g:InlineLabel ui:field="firstName"/>
         <g:InlineLabel ui:field="lastName"/>
    </g:Anchor>
</g:HTMLPanel>

当我尝试这个时,我得到:

ERROR: Found widget in an HTML context Element <g:InlineLabel ui:field='firstName'> (:7). 

如何在锚点中嵌入小部件?以前我使用过:

  <a id="myAnchor">
     etc...
  </a>

然后在我的代码中操作DOM来设置HREF,但那很难看。还有更好的方法吗?

2 个答案:

答案 0 :(得分:15)

下面的类与SimplePanel完全相同(即,您可以在其中放置一个小部件),但使用“a”而不是“div”。如果您需要更多小部件,只需在其中添加另一个面板。

import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.SimplePanel;

public class Link extends SimplePanel {
    public Link() {
        super(DOM.createAnchor());
    }

    private void setHref(String href) {
        getElement().setAttribute("href", href);
    }

    private String getHref() {
        return getElement().getAttribute("href");
    }

    public void setTarget(String frameName) {
        getElement().setAttribute("target", frameName);
    }
}

答案 1 :(得分:6)

最好使用Panel(Flow或Horizo​​ntal)并在面板上添加点击处理程序以模拟链接。 Anchor,Button和类似的小部件不允许在其中使用子标签。