Здравствуйте.. Хочу оседлать 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.
Помогите пожалуйста...
|