Как сделать печать объектов Collections чистой в JSP - PullRequest
2 голосов
/ 12 сентября 2010

Я рассматривал ряд вариантов удаления формы с помощью скриптлетов в моем jsps.

Основной причиной "беспорядка", как правило, являются проблемы с распечаткой ArrayList и других объектов Collections, потому что некоторыеразметка, связанная с презентацией, смешивается с некоторым Java.

Что бы вы посоветовали в качестве лучшего решения для решения подобных ситуаций.Я смотрю на калитку (очень кратко), но не могу понять, поможет ли это исправить ситуацию.

Ответы [ 4 ]

5 голосов
/ 12 сентября 2010

Если вы используете простую JSP без какой-либо другой веб-инфраструктуры, я предлагаю вам взглянуть на JSTL. Он дает вам много тегов для управления вашими объектами.

Один тег, который может вас заинтересовать, - это тег <c:forEach />. Это позволяет вам использовать циклы for-each внутри ваших страниц JSP.

Для получения дополнительной информации, вот несколько ссылок:

3 голосов
/ 12 сентября 2010

JSTL имеет:

<c:forEach items="${list}" var="item">
   ${item}
</c:forEach>

Вы должны просто поместить список в качестве атрибута запроса с именем list.

Посмотрите на другие теги JSTLчтобы избавиться от скриптлетов.

1 голос
/ 12 сентября 2010

Я полагаю, что почти каждый веб-API более высокого уровня может помочь вам в этом.

Для Wicket я нашел Повторители :

Повторители - это компоненты, которые могут визуализировать разметку тела несколько раз.Эти компоненты полезны для создания выходных данных, которые традиционно создаются с помощью циклов.

Используя, например, ListView, вы можете сделать это :

Код:

List list = Arrays.asList(new String[] { "a", "b", "c" });
ListView listview = new ListView("listview", list) {
    protected void populateItem(ListItem item) {
        item.add(new Label("label", item.getModel()));
    }
};

Разметка:

<span wicket:id="listview">
   this label is: <span wicket:id="label">label</span><br/>
</span>

В результате в браузере будет отображаться следующее:

<span wicket:id="listview">
   this label is: <span wicket:id="label">a</span><br/>
</span><span wicket:id="listview">
   this label is: <span wicket:id="label">b</span><br/>
</span><span wicket:id="listview">
   this label is: <span wicket:id="label">c</span><br/>
</span>

На этой странице также есть более сложные примеры.

Например, для JSF есть:

  • <ui:repeat>, что аналогично forEach JSTL, на которое указывали другие плакаты.
  • <ui:dataTable>, что аналогично ListView
0 голосов
/ 12 сентября 2010

Если ваши разметка и логика запутаны, лучше всего их разделить, используя MVC-Pattern ( Model-View-Controller ).

См. Здесь: http://en.wikipedia.org/wiki/Model–View–Controller#Java:_Java_Platform.2C_Enterprise_Edition_.28Java_EE.29; или здесь: http://www.oracle.com/technetwork/java/javaee/overview/index.html

...