другая разметка, но тот же код Java в калитке? - PullRequest
1 голос
/ 06 мая 2011

У меня есть куча панелей с разной разметкой. Я хочу повторно использовать тот же класс Java и работать с вариациями.
В некоторых панелях некоторые компоненты отсутствуют, но я не хочу вносить изменения в мой класс Java, чтобы установить видимость компонента для каждого случая. Это может стать немного грязным. Я хочу повторно использовать тот же класс Java, пока мое приложение не сломается, если в разметке отсутствуют компоненты. Поэтому я думаю, что это сводится к этому: 1- можете ли вы добавить компоненты в класс панели, а затем не использовать их в разметке?

Например:

Java
add(new Label("a","hello"));
add(new Label("b","hi"));
add(new Label("c","see ya"));
add(new Label("d","good bye"));

hello_1.hml
<span wicket:id="a">xxx</span>
<span wicket:id="b">xxx</span>
<span wicket:id="c">xxx</span>
<span wicket:id="d">xxx</span>

hello_2.hml<br>
<span wicket:id="a">xxx</span>
<div wicket:id="d">xxx</div>

hello_3.hml<br>
<div wicket:id="a">xxx</div>
<b wicket:id="c">xxx</b>

hello_4.hml<br>
<div wicket:id="a">xxx</div>

Надеюсь, мой вопрос понятен.

Ответы [ 2 ]

6 голосов
/ 06 мая 2011

Чтобы ответить на ваш вопрос напрямую: нет, сторона Java и HTML должна точно совпадать.

Однако всегда есть способ обойти, в зависимости от конкретного варианта использования.

  1. Сделайте HTML-элементы невидимыми из CSS или атрибута стиля.
  2. Используйте фрагменты, чтобы избежать рендеринга необязательных битов.
  3. Используйте наследование, при этом более многофункциональные панели расширяют простые панели.
  4. Сделайте компоненты невидимыми из кода Java.

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

1 голос
/ 07 мая 2011

Как насчет добавления компонента в иерархию Java в зависимости от варианта?

if ("4" .equals (getVariation ()) { добавить (новый компонент A ("a")); }

...