GWT UiBinder несколько полей в одном шаблоне - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно создать div, который полностью меняет форму и размер (но не содержимое) в зависимости от значения переменной. Я хотел бы сделать что-то вроде этого:

<g:FlowPanel styleName="PanelA" ui:field="panelA">
    ...
    <g:HTML styleName="Html1" ui:field="html1"/>
    ...
    <g:HTML styleName="Html2" ui:field="html2"/>
    ...
</g:Flowpanel>
<g:FlowPanel styleName="PanelA" ui:field="panelB">
    ...
    <g:HTML styleName="Html1" ui:field="html1"/>
    ...
    <g:HTML styleName="Html2" ui:field="html2"/>
    ...
</g:Flowpanel>

но, очевидно, компилятор выдаст мне ошибку:

Поле html1 не может появляться несколько раз в одном шаблоне

Есть способ сделать то, что я хочу, или мне нужно использовать css? Большое спасибо,

Willy

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я нашел это:

https://makk.es/blog/gwt-uibinder-multiple-templates-one-owner-class/

Я думаю, что это то решение, которое я искал!

0 голосов
/ 03 июля 2018

Вы не можете иметь несколько полей с одним и тем же именем.

Я бы объявил все переменные, но использовал бы только правильные, например:

@UiField
HTML panelA_html1;
@UiField
HTML panelA_html2;
@UiField
HTML panelB_html1;
@UiField
HTML panelB_html2;

HTML html1;
HTML html2;

...

switch(panelLayout) {
    case A:
        html1 = panelA_html1;
        html2 = panelA_html2;
        break;
    case B:
        html1 = panelB_html1;
        html2 = panelB_html2;
        break;
}

Или просто разбейте свой макет на набор отдельных меньших макетов и используйте тот, который вам нужен в данный момент.

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