Запретить Wicket генерировать HTML для элементов контейнера? - PullRequest
3 голосов
/ 27 мая 2011

У меня проблема с генерированием разметки Wicket для элементов, которые должны присутствовать программно, но не структурно. Это ничего не портит, но мне нравится держать страницу как можно более аккуратной. Следует отметить, что я являюсь разработчиком внешнего интерфейса, поэтому я хотел бы по возможности не пускать руки в java-файлы.

Скажем, у меня есть следующий HTML, который является частью шаблона компонента:

<ul class="configList" wicket:id="rows">
    <li wicket:id="cols">
        <div wicket:id="checkBoxThing"></div>
    </li>
</ul>

А это шаблон для checkBoxThing:

<wicket:panel>
    <div wicket:id="checkboxContainer">
        <label wicket:id="label"></label>
        <input  type="checkbox" wicket:id="checkbox" name="check" />
    </div>
</wicket:panel>

При просмотре страницы результирующая разметка выглядит следующим образом:

<ul class="configList>
    <li>
        <div>
          <div id="RandomWicketID">
             <label>Checkbox Label</label>
             <input type="checkbox" />
          </div>
        </div>
    </li>
</ul>

Эти два DIV внутри LI ничего не делают структурно или не используются для сценария на стороне клиента; они просто занимают место. Есть ли что-то, что я могу сделать в шаблоне, чтобы сказать Wicket, чтобы они не отображались? Кажется, я не могу найти какие-либо параметры, которые могу передать, чтобы выполнить это, и никто из офиса, кажется, не знает.

Заранее спасибо!

Ответы [ 3 ]

14 голосов
/ 27 мая 2011

Используйте тег.

Примечание: если режим конфигурации Wicket настроен на разработку (по умолчанию IIRC), атрибуты и теги wicket по-прежнему будут присутствовать в разметке.Если вы измените его на развертывание, Wicket удалит их из вывода (см. https://cwiki.apache.org/WICKET/how-to-remove-wicket-markup-from-output.html).

configList:

<ul class="configList" wicket:id="rows">
    <li wicket:id="cols">
        <wicket:container wicket:id="checkBoxThing" />
    </li>
</ul>

checkBoxThing:

<wicket:panel>
    <wicket:container wicket:id="checkboxContainer">
        <label>Checkbox Label</label>
        <input type="checkbox" />
    </wicket:container>
</wicket:panel>

Результат (врежим развертывания):

<ul class="configList>
    <li>
        <label>Checkbox Label</label>
        <input id="foo" type="checkbox" />
    </li>
</ul>
2 голосов
/ 27 мая 2011

Используйте <wicket:container> например.

<ul class="configList" wicket:id="rows">
    <li wicket:id="cols">
        <wicket:container wicket:id="checkBoxThing"></wicket:container>
    </li>
</ul>

В общем, см. https://cwiki.apache.org/WICKET/wickets-xhtml-tags.html

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

Еще одна опция - Component # setRenderBodyOnly (true).

...