Ищете что-то похожее на пользовательский интерфейс: повторите для использования в JSP - PullRequest
0 голосов
/ 25 августа 2011

Я просто хочу перебрать список, я не хочу, чтобы html выкладывался, поэтому datalist и c: ForEach не являются опцией.Причина в том, что макет уже сделан, и, как правило, мы должны использовать <ul> и <li>, поэтому я не могу ничего использовать для создания таблицы.

Я исследовал и пользовательский интерфейс: повтор будет делатьработа, но она не работает в JSP.

Хотелось бы, чтобы в логике STRUTS было что-то похожее: повторяться, потому что мне нужно только перебирать список.

Спасибо за вашу помощь.

Джон

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

<c:forEach> не генерирует HTML.Он только перебирает коллекцию или массив.Он делает то же самое, что и <struts:iterate>, но стандартным способом и с JSP EL.

<ul>
    <c:forEach var="item" items="${myListOfItems}">
        <li><c:out value="${item.label}"/></li>
    </c:forEach>
</ul>
1 голос
/ 25 августа 2011

Не совсем понятно, что именно вы имеете в виду под "datalist", но Томагавк <t:dataList> по умолчанию не генерирует HTML, если вы пропустите атрибут layout, так что это должно сработать для вы.

<ul>
    <t:dataList value="#{memberHandler.subTypes}" var="subType">
        <li><h:outputText value="#{subType.fullSubtypeDisplayName}"/></li>
    </t:dataList>
</ul>

Кстати, установка layout="unorderedList" должна отображать точно такой же <ul><li>, как в примере выше:

<t:dataList value="#{memberHandler.subTypes}" var="subType" layout="unorderedList">
    <h:outputText value="#{subType.fullSubtypeDisplayName}"/>
</t:dataList>

При использовании JSTL <c:forEach> в шаблоне JSP, ссылающемся на значение управляемого бина, вы зависите от используемой версии JSP и от того, JSF уже заранее создал управляемый бин. При использовании Servlet 2.5 / JSP 2.1 вы должны иметь возможность использовать #{} в тегах JSTL:

<ul>
    <c:forEach value="#{memberHandler.subTypes}" var="subType">
        <li><h:outputText value="#{subType.fullSubtypeDisplayName}"/></li>
    </c:forEach>
</ul>

При использовании Servlet 2.4 / JSP 2.0 вы должны придерживаться ${} и использовать <c:out> вместо <h:outputText> и убедиться, что JSF уже автоматически создал управляемый bean-компонент в шаблоне представления с помощью #{}, который вызывает автоматическое создание бобы, тогда как ${} нет.

<h:someComponent value="#{memberHandler.someThing}" />
...
<ul>
    <c:forEach value="${memberHandler.subTypes}" var="subType">
        <li><c:out value="${subType.fullSubtypeDisplayName}"/></li>
    </c:forEach>
</ul>

Томагавк <t:dataList> был бы намного лучшей альтернативой здесь.

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