2011-12-22 21 views
0

我收集了我想在自定义标记中使用的对象集合,但是我只能获取集合的元素一次,因为它在获取后迭代到下一个集合。所以我决定定义一个变量。但它不起作用。如何将对象放入JSP变量中?

<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

除非您在文章中省略了一些关键代码,当您调用.getElement()方法时,itnull。拨打.next()然后将抛出NullPointerException

尝试扭转这两条线的顺序:

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

这是我一直试图做的第一件事。但我有同样的例外。 – And 2011-12-22 18:30:51

+1

切换时是否来自'c:set'标记或'mytag:boddyattr'标记的异常? – 2011-12-22 18:44:09

+0

例外情况出现在我的自定义标记中。不知道为什么,但它(定义一个变量)不起作用。改变了通常的标签,现在可以使用。 – And 2011-12-22 18:47:36