Как создать виджет GWT Composite без добавления DIV в DOM? - PullRequest
2 голосов
/ 12 января 2012

Если я создаю составной виджет с использованием 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>

Edit Похоже, что DIV создается <g:HTMLPanel>

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Да, 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 голос
/ 12 января 2012

Частичный ответ Очевидно, <g:HTMLPanel> генерирует div и может управляться с помощью атрибута тега:

<g:HTMLPanel tag="span">
    <!-- your stuff -->
</g:HTMLPanel>

Кредит: Попытка получить UIBinder, чтобы дать мнеspan, а не div

Это не решает мою проблему полностью, так как я хочу либо исключить DIV (используя альтернативу HTMLPanel?), либо иметь возможность взаимодействовать с ним (добавлять классы и т. д.)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...