是的,div是由HTML面板创建的。你可以删除HTMLPanel,但你必须将绑定类型更改为Element,你将无法再将其用作复合。在这种情况下,我会做以下事情:
如果我使用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>
创建的
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>
部分回答显然,<g:HTMLPanel>
生成div,并且可以通过使用标签属性进行控制
<g:HTMLPanel tag="span">
<!-- your stuff -->
</g:HTMLPanel>
来源:试图让UIBinder给我一个跨度而不是div
这并不能完全解决我的需求,因为我想消除DIV(使用HTMLPanel的替代方案?)或能够与它交互(添加类等)。