如果我使用UIBinder创建一个复合小部件,然后在代码中使用我创建的小部件,它会在我的小部件周围插入额外的<div>
元素。有没有办法消除div或控制它是什么类型的元素?
public class ExamplePanel<T> extends Composite {
@UiField LabelElement inputLabel;
private static ExamplePanelUiBinder uiBinder = GWT.create(ExamplePanelUiBinder.class);
interface ExamplePanelUiBinder extends UiBinder<Widget, ExamplePanel> { }
public ExamplePanel() {
initWidget(uiBinder.createAndBindUi(this));
}
}
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<label ui:field="inputLabel">Label text</label>
</g:HTMLPanel>
</ui:UiBinder>
修改
似乎DIV是由<g:HTMLPanel>
答案 0 :(得分:3)
是的,div由HTML面板创建。您可以删除HTMLPanel,但必须将绑定类型更改为Element,您将无法再将其用作复合。在这种情况下,我会做以下事情:
public class ExamplePanel extends Widget
{
private static ExamplePanelUiBinder uiBinder = GWT.create(ExamplePanelUiBinder.class);
interface ExamplePanelUiBinder extends UiBinder<Element, ExamplePanel>
{
}
@UiField LabelElement inputLabel;
public ExamplePanel()
{
setElement(uiBinder.createAndBindUi(this));
}
}
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder">
<label ui:field="inputLabel">Label text</label>
</ui:UiBinder>
答案 1 :(得分:1)
部分答案
显然<g:HTMLPanel>
生成div,可以使用tag属性控制:
<g:HTMLPanel tag="span">
<!-- your stuff -->
</g:HTMLPanel>
信用:Trying to get UIBinder to give me a span not a div
这并不能完全解决我的需求,因为我想要消除DIV(使用HTMLPanel的替代?)或能够与它交互(添加类等)。