Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Итератор коллекции с использованием tld, Переменные сценария 
:(
    Опции темы
compiler91
Дата 30.3.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

Репутация: нет
Всего: нет



Здравствуйте..
Хочу оседлать tld,  но вот не задача, не работает один из примеров:(
Задача: пройтись итерацией по вектору, выводя каждый элемент.
Проблема в том, что не удается непосредственно вывести элемента (если выводить не элемент, а некий символ, то выведется ровно столько раз, сколько элементов в векторе).
Как я это делаю:
index.jsp 
Код

   <%@taglib prefix="in" uri="/WEB-INF/tld/in.tld" %>
   <% Vector vector = new Vector(); vector.add("one"); vector.add("two");%>
   <it:iterate2 collection="<%=vector%>">       
        Item : <%=item%> <br />
    </it:iterate2>

iterate.tld 
Код

    <tag>
        <name>iterate2</name>
        <tei-class>tld.IteratorTagInfo</tei-class>
        <tag-class>tld.IteratorTag</tag-class>
        <attribute>
            <name>collection</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

IteratorTag.java
Код

package tld;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
import java.util.*;

public class IteratorTag extends BodyTagSupport {
    private Collection collection;
    private Iterator iterator;

    public void setCollection(Collection collection){
        this.collection = collection;
    }
    public int doStartTag() throws JspException {
        return collection.size() > 0 ? EVAL_BODY_BUFFERED : SKIP_BODY;
    }
    public void doInitBody() throws JspException {
        iterator = collection.iterator();
        pageContext.setAttribute("item", iterator.next());
    }
    public int doAfterBody() throws JspException {
        if(iterator.hasNext()){
            pageContext.setAttribute("item", iterator.next());
            return EVAL_BODY_BUFFERED;
        } else {
            try {
                getBodyContent().writeOut(getPreviousOut());
            } catch(IOException e){
                throw new JspException(e.getMessage());
            }
            return SKIP_BODY;
        }
    }
}

IteratorTagInfo.java(помоему, он не используеться)
Код

package tld;

import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.*;

public class IteratorTagInfo extends TagExtraInfo {
    public VariableInfo [] getVaribleInfo(TagData data){
        return new VariableInfo[]{
                new VariableInfo(data.getId(), "Java.lang.Object", true, VariableInfo.NESTED)
        };
    }
}

Если использовать 
Код
<jsp:useBean id="item" scope="page" class="java.lang.String" />
, то все работает, но очень хочется обойтись без компонентов bean.

Помогите пожалуйста...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.