我想在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,但那很难看。还有更好的方法吗?
答案 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或Horizontal)并在面板上添加点击处理程序以模拟链接。 Anchor,Button和类似的小部件不允许在其中使用子标签。