Как использовать UIBinder динамично? - PullRequest
0 голосов
/ 03 августа 2011

Я использую GWT 2.3. Я использую пользовательский интерфейс в этом. Я хочу создать сетку в этом с помощью UIBinder. Для этого я написал этот код.

<g:Grid ui:field='mygrid' addStyleNames='{style.panel}'
            cellSpacing='10'>
            <g:row>
                <g:customCell>
                    <g:Label text="11" styleName="{style.label}" /> 
                </g:customCell>
                <g:customCell>
                    <g:Label text="22" styleName="{style.label}" /> 
                </g:customCell>
            </g:row>
            <g:row>
                <g:customCell>
                    <g:Label text="33" styleName="{style.label}" /> 
                </g:customCell>
                <g:customCell>
                    <g:Label text="44" styleName="{style.label}" /> 
                </g:customCell>
            </g:row>
        </g:Grid>

Теперь здесь мои данные сетки являются статическими. Теперь, если мои данные поступают со стороны сервера и в зависимости от этих данных, я хочу создать Grid с использованием UIbinder. Как это возможно ??

Еще один случай. Есть форма. При этом из числа элементов управления исходит из базы данных. Так как UIBider может поддержать создание этой формы. Как количество элементов управления может меняться каждый раз

Итак, я хочу знать, возможно ли использовать UIBinder для создания пользовательского интерфейса в зависимости от данных времени выполнения.

Любые предложения или примеры приветствуются.

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Да, вы можете добавлять данные в UIBinder из Java.Когда вы создали UIBinder в Eclipse, он также создал файл .java для этого XML.Отредактируйте этот соответствующий java-файл и добавьте что-то вроде этого:

public class MyGridSample extends Composite {
    // uiBinder interface declaration...
    private static MyGridSampleUiBinderUiBinder uiBinder = GWT.create(MyGridSampleUiBinder.class);

    interface MyGridSampleUiBinder extends UiBinder<Widget, MyGridSample > {
    }

    // annotation to get ui-field into code
    @UiField
    Grid mygrid;

    public MyGridSample () {
        setWidget(uiBinder.createAndBindUi(this));
        // sets cell 0,0 with label
        mygrid.setWidget(0, 0, new Label("cell 0"));
    }
}

GWT - это клиентская среда, а UIBinder предварительно скомпилирован как файлы javascript - они служат статическими файлами.Вы должны сделать вызов Webservice, чтобы получить данные в этот шаблон.

1 голос
/ 03 августа 2011

UiBinder «кросс-компилируется» для JavaScript и HTML-кода. Как только это будет сделано, вы не сможете изменить его. Теперь есть способ сделать что-то вроде отправки вашего синтаксиса XML клиенту, а затем создать сетку.

Однако возможно, что вы добавите новые строки в свой «код позади».

На ваш второй вопрос: я понятия не имею, что вы имеете в виду: P

...