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

Geo*_*old 8 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

  <a id="myAnchor">
     etc...
  </a>
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中操作DOM来设置HREF,但那很难看.有没有更好的办法?

bog*_*anb 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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Vin*_*d R 6

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