Как поместить объект в переменную JSP? - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть коллекция объектов, которую я хочу использовать в своем пользовательском теге. Но я могу получить элемент коллекции только один раз, потому что после получения он переходит к следующему.Поэтому я решил определить переменную.Но это не работает.

<jsp:useBean id="rw" scope="request" class=
"by.epam.web.libruary.transferobject.AvailableBookSet">
    <c:set var="element"
        value="${rw.element}"
        scope="page"/>
    <mytag:bodyattr num="${rw.size}">
        <form name="orderBook" method="POST" action="${controllerpage}">
            <input type="submit" name="submit" 
              value="${rw.element.shortinfo}">
        </form>
    </mytag:bodyattr>
</jsp:useBean>

Вот код самой коллекции:

public class AvailableBookSet extends java.util.HashSet {
    private java.util.Iterator it;

    @SuppressWarnings("unchecked")
    public AvailableBookSet(){

            try {
                    //Retrieving info from DataBase (100% working code)

            } catch (CannotTakeConnectionException e) {
            }
    }

    public String getSize(){
            it = this.iterator();
            return Integer.toString(this.size());
    }

    public Object getElement(){
            return it.next();
    }

}

И вот мое исключение:

org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/available_books.jsp at line 51

48:     
49:     <jsp:useBean id="rw" scope="request" class=
50:     "by.epam.web.libruary.transferobject.AvailableBookSet">
51:         <c:set var="element"
52:             value="${rw.element}"
53:             scope="page"/>
54:         <mytag:bodyattr num="${rw.size}">

Будеточень благодарен за вашу помощь.

1 Ответ

1 голос
/ 22 декабря 2011

Если вы не пропустили какой-либо код ключа в своем сообщении, it равен null, когда вы вызываете метод .getElement() При вызове .next() будет NullPointerException.

Попробуйте изменить порядок этих двух строк:

<c:set var="element" value="${rw.element}" scope="page"/>
<mytag:bodyattr num="${rw.size}">
...