gpt4 book ai didi

jsp - jSTL - forEach,具有 bean 列表作为属性的 bean

转载 作者:行者123 更新时间:2023-12-01 19:37:00 25 4
gpt4 key购买 nike

我有一个名为 Experiment 的 bean,它有一个属性,该属性是一个名为 Assay 的 bean 数组列表。

在 jsp 中,我想遍历存储在 Experiment bean 中的化验列表,我尝试这样做:

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

'descision' 和 'comment' 是 Assay bean 的属性。

但这行不通。我收到错误:

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

好像“exp.assays”中的项目列出了 bean 类型 Experiment 而不是我期望的 Assay。

所以我尝试在 forEach 循环中访问 Experiment 属性(eid,我知道我可以通过直接编写 ${exp.eid} 来访问它),如下所示:

                <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;
}
}

最佳答案

我刚刚尝试复制您遇到的问题并发现它可以正常工作。这是我的代码:

分析类:

 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

将我上面所做的与您的代码进行比较,看看您是否可以找出任何差异。如果您仍然遇到问题,请在此处发布您的代码。

关于jsp - jSTL - forEach,具有 bean 列表作为属性的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com