2013-10-10 38 views
3

我有一個名爲Experiment的bean,它具有一個屬性,該屬性是稱爲Assay的類型的beans的數組列表。jstl - forEach,將bean列表作爲屬性的bean

在JSP我想遍歷存儲在一個實驗豆試驗的名單,我嘗試這樣做:

   <c:forEach items="${exp.assays}" var="ay"> 
        <tr><td>${ay.decision}</td><td>${ay.comment}</td></tr> 
       </c:forEach> 
試驗的

「descision」和「評論」的性質豆。

但這不起作用。我得到的錯誤:

SEVERE: javax.el.PropertyNotFoundException: The class 'beans.Experiment' does not have the property 'decision'. 

彷彿項目在「exp.assays名單豆型實驗的地方,而不是分析的,因爲我期望的那樣。

所以,我想訪問實驗性質(EID,我知道我可以直接寫入$ {} exp.eid訪問)在foreach循環,而不是像這樣:

   <c:forEach items="${exp.assays}" var="ay"> 
        <tr><td>${ay.eid}</td></tr> 
       </c:forEach> 

,但後來我錯誤消息:

SEVERE: javax.el.PropertyNotFoundException: The class 'beans.Assay' does not have the property 'eid'. 

任何人知道正在發生什麼或我該如何修復它?

完整的bean代碼是很長,但這裏是我認爲部分都與此有關

實驗:

public class Experiment extends dataItem implements Serializable { 

    private String eid; 
    private List<Assay> assays = new ArrayList(); 

    public String getEid() { 
     return eid; 
    } 

    public void setEid(String id) { 
     eid = id; 
    } 

    public List<Assay> getAssays() { 
     return assays; 
    } 

    public void setAssays(List<Assay> assays) { 
     this.assays = assays; 
    } 

} 

和分析:

public class Assay extends dataItem implements Serializable { 

    private Integer id; 
    private stock antigen; 
    private String decision; 
    private String comment; 
    private String freeAb;  
    private List<AssayData> data; 
    private List<conjugate> conjugates = new ArrayList(); 

    public List<conjugate> getConjugates() { 
     return conjugates; 
    } 

    public void setConjugates(List<conjugate> conjugates) { 
     this.conjugates = conjugates; 
    } 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public stock getAntigen() { 
     return antigen; 
    } 

    public void setAntigen(String id) { 
     stock s = new stock(); 
     s.setSID(id); 

     this.antigen = s; 
    } 

    public String getDecision() { 
     return decision; 
    } 

    public void setDecision(String decision) { 
     this.decision = decision; 
    } 

    public String getComment() { 
     return comment; 
    } 

    public void setComment(String comment) { 
     this.comment = comment; 
    } 

    public String getFreeAb() { 
     return freeAb; 
    } 

    public void setFreeAb(String freeAb) { 
     this.freeAb = freeAb; 
    } 

    public List<AssayData> getData() { 
     return data; 
    } 

    public void setData(List<AssayData> data) { 
     this.data = data; 
    } 
} 
+0

你會發布豆的代碼?吸氣劑是否正確定義? – Alex

+0

我已經添加了代碼。我一直在看吸氣劑,但我看不出他們有什麼問題。 – numfar

+0

我同意getters很好。你會發布JSP嗎?您是否包含了taglibs <%@ taglib uri =「http://java.sun.com/jsp/jstl/core」prefix =「c」%>並導入了實驗類<%@ page import =「com。taglibs.Experiment「%>? – Alex

回答

2

我剛纔試圖複製你遇到的問題,並發現它的工作原理沒有錯誤。這裏是我的代碼:

化驗類:

public class Assay { 

    private String decision; 
    private String comment;  

    Assay(){} 

    Assay(String decision, String comment){ 
     setComment(comment); 
     setDecision(decision); 
    } 

    public String getComment() { 
     return comment; 
    } 
    public void setComment(String comment) { 
     this.comment = comment; 
    } 
    public String getDecision() { 
     return decision; 
    } 
    public void setDecision(String decision) { 
     this.decision = decision; 
    } 
} 

實驗課:

public class Experiment { 

    private ArrayList<Assay> assays = new ArrayList<Assay>(); 

    public Experiment() {  
     assays.add(new Assay("c1","d1")); 
     assays.add(new Assay("c2","d2"));   
    } 

    public ArrayList<Assay> getAssays() { 
     return assays; 
    } 

     public void setAssays(ArrayList<Assay> assays) { 
      this.assays = assays; 
     } 
} 

的JSP:

<% 
     Experiment e = new Experiment(); 
     pageContext.setAttribute("exp", e); 
%> 

<c:forEach items="${exp.assays}" var="ay"> 
     <tr><td>${ay.decision}</td><td>${ay.comment}</td></tr> 
</c:forEach> 

輸出是:C1D1 C2D2

比較wh在上面我已經完成了你的代碼,看看你是否能夠找出任何區別。如果您仍然有問題,請在此發佈您的代碼。

0

這已解決。

問題與我如何爲測定列表分配值有關。我犯了一個錯誤,將化驗列表的值變成了實驗bean。