2011-12-22 24 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