Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > WebWork цикл for


Автор: admin82 12.9.2007, 13:44
Всем привет. Вопрос возник, может, кто и поможет. 
Использую webwork.
Вот такой есть код:
Код

<webwork:iterator value="rows" status="'status'">
        <tr class="row-height" onmouseover="rollOverTreeRow(this)" onmouseout="rollOutTreeRow(this)">
            <webwork:iterator value = "???????????????">
                <td>ffff</td>
            </webwork:iterator>
        </tr>
</webwork:iterator>

Суть в том, что у всех элементов коллекции rows есть поле prefix типа int (ну или Integer). Так вот как вложенный цикл завязать на этот prefix, т.е. количество итераций = prefix?
Читаем доку:
The iterator tag allows you to loop over collections of objects
easily. It’s designed to know how to loop over any Collection, Map, Enumeration,
Iterator, or array. It also provides the ability to define a variable in the action
context that lets you determine certain basic information about the current loop
state, such as whether you’re looping over an odd or even row. Table 9.6 provides
the attributes for the iterator tag.
Т.е. в первом итераторе все прокатывает, т.к. метод getRows возвращает коллекцию. А как быть во втором? 
Код

<webwork:iterator value = "prefix"> 

уже не прокатывает. Создавать какую-то коллекцию вместо prefix у объекта row, в которой количество элементов было бы равно prefix,   очень не хочется. 
Есть спецы?

Автор: MisterCleric 12.9.2007, 14:28
Код

<%@ taglib prefix="ww" uri="webwork"%>
<ww:iterator value="rows">
      <ww:bean name="com.opensymphony.webwork.util.Counter" id="counter">
            <ww:param name="last" value="prefix"/>
      </ww:bean>
      <ww:iterator value="#counter">
            <ww:property/><br>
      </ww:iterator>
</ww:iterator>

Поищи книгу WebWork in Action

Автор: admin82 12.9.2007, 14:56
Спасибо, книга такая у меня есть. такое я уже пробовал. вот что выходит:
Код

javax.servlet.ServletException: No name found for following expression:last
    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
    at org.apache.jsp.secure.admin.user.views.leadbrowser_005fassigned_jsp._jspService(leadbrowser_005fassigned_jsp.java:229)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

Автор: MisterCleric 12.9.2007, 16:31
хорошо, а так пробовал:
Код

<ww:bean name="com.opensymphony.webwork.util.Counter" id="counter">
            <ww:param name="first" value="0"/>
            <ww:param name="last" value="%{prefix.longValue()}"/>
</ww:bean>

ты же сказал, что prefix у тебя Integer,
а 
Код

Counter.setLast()

требует long
а Exception по-моему не находит setLast() с int

Автор: admin82 12.9.2007, 17:25
Все верно, спасибо, не заметил!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)