无法访问 EL 中的 bean 值

发布于 01-01 09:50 字数 3381 浏览 2 评论 0原文

public class ReportAdHoc {

    private String name;
    private String reportKind;
    private List<ReportAdHocInstance> instances;


    public void addInstance(ReportAdHocInstance instance){
        if (instances == null){
            instances = new ArrayList<ReportAdHocInstance>();
        }
        instances.add(instance);
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getReportKind() {
        return reportKind;
    }
    public void setReportKind(String reportKind) {
        this.reportKind = reportKind;
    }

    public List<ReportAdHocInstance> getInstances() {
        return instances;
    }
    public void setInstances(List<ReportAdHocInstance> instances) {
        this.instances = instances;
    }


}

public class ReportAdHocInstance {

    private int id;
    private String reportName;  
    private Date runtime;
    private String runBy;
    private String format;
    private List<ReportAdHocParameter> parameters;

    public void addParameters(ReportAdHocParameter parameter){
        if (parameters == null){
            parameters = new ArrayList<ReportAdHocParameter>();
        }
        parameters.add(parameter);
    }

    public String getReportName() {
        return reportName;
    }
    public void setReportName(String reportName) {
        this.reportName = reportName;
    }
    public Date getRuntime() {
        return runtime;
    }
    public void setRuntime(Date runtime) {
        this.runtime = runtime;
    }
    public String getFormat() {
        return format;
    }
    public void setFormat(String format) {
        this.format = format;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getRunBy() {
        return runBy;
    }
    public void setRunBy(String runBy) {
        this.runBy = runBy;
    }

    public List<ReportAdHocParameter> getParameter() {
        return parameters;
    }

    public void setParameter(List<ReportAdHocParameter> parameters) {
        this.parameters = parameters;
    }
}

public class ReportAdHocParameter {

    private int id;
    private String parameterName;   
    private String parameterValue;

    public String getParameterName() {
        return parameterName;
    }
    public void setParameterName(String parameterName) {
        this.parameterName = parameterName;
    }

    public String getParameterValue() {
        return parameterValue;
    }
    public void setParameterValue(String parameterValue) {
        this.parameterValue = parameterValue;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

}

JSP 代码

<c:forEach items="${reportAdHoc.instances}" var="inst">
        <c:forEach items="${inst.parameter}" var="param">
            <td>${param.parameterName}</td>         
        </c:forEach>
</c:forEach>

我无法检索 ${param.parameterName} 值。它显示空白。

但是,如果我打印 Test ,则 test 会打印 11 次,因为根据我的循环,它应该包含 11 个值。

为什么我无法检索 parameterName

public class ReportAdHoc {

    private String name;
    private String reportKind;
    private List<ReportAdHocInstance> instances;


    public void addInstance(ReportAdHocInstance instance){
        if (instances == null){
            instances = new ArrayList<ReportAdHocInstance>();
        }
        instances.add(instance);
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getReportKind() {
        return reportKind;
    }
    public void setReportKind(String reportKind) {
        this.reportKind = reportKind;
    }

    public List<ReportAdHocInstance> getInstances() {
        return instances;
    }
    public void setInstances(List<ReportAdHocInstance> instances) {
        this.instances = instances;
    }


}

public class ReportAdHocInstance {

    private int id;
    private String reportName;  
    private Date runtime;
    private String runBy;
    private String format;
    private List<ReportAdHocParameter> parameters;

    public void addParameters(ReportAdHocParameter parameter){
        if (parameters == null){
            parameters = new ArrayList<ReportAdHocParameter>();
        }
        parameters.add(parameter);
    }

    public String getReportName() {
        return reportName;
    }
    public void setReportName(String reportName) {
        this.reportName = reportName;
    }
    public Date getRuntime() {
        return runtime;
    }
    public void setRuntime(Date runtime) {
        this.runtime = runtime;
    }
    public String getFormat() {
        return format;
    }
    public void setFormat(String format) {
        this.format = format;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getRunBy() {
        return runBy;
    }
    public void setRunBy(String runBy) {
        this.runBy = runBy;
    }

    public List<ReportAdHocParameter> getParameter() {
        return parameters;
    }

    public void setParameter(List<ReportAdHocParameter> parameters) {
        this.parameters = parameters;
    }
}

public class ReportAdHocParameter {

    private int id;
    private String parameterName;   
    private String parameterValue;

    public String getParameterName() {
        return parameterName;
    }
    public void setParameterName(String parameterName) {
        this.parameterName = parameterName;
    }

    public String getParameterValue() {
        return parameterValue;
    }
    public void setParameterValue(String parameterValue) {
        this.parameterValue = parameterValue;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

}

JSP code

<c:forEach items="${reportAdHoc.instances}" var="inst">
        <c:forEach items="${inst.parameter}" var="param">
            <td>${param.parameterName}</td>         
        </c:forEach>
</c:forEach>

I am not able to retrieve the ${param.parameterName} value. It displays blank.

But if I print <td>Test</td> then test is printed 11 times as according to me loop it should contain 11 values.

Why I am not able to retrieve parameterName?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑脸一如从前2025-01-08 09:50:34

${param} 是引用请求参数映射的保留 EL 变量名称。例如 ${param.foo} 为您提供 request.getParameter("foo")。隐式 EL 变量优先于自定义变量。

给它一个不同的名字。例如 var="parameter" 并使用 ${parameter}

<c:forEach items="${reportAdHoc.instances}" var="inst">
    <c:forEach items="${inst.parameter}" var="parameter">
        <td>${parameter.parameterName}</td>
    </c:forEach>
</c:forEach>

另请参阅:


此外,我建议重命名一个和另一个,以便您最终得到更多的自记录代码,如下所示:

<c:forEach items="${reportAdHoc.instances}" var="instance">
    <c:forEach items="${instance.parameters}" var="parameter">
        <td>${parameter.name}</td>
    </c:forEach>
</c:forEach>

The ${param} is a reserved EL variable name referring the request parameter map. For example ${param.foo} gives you request.getParameter("foo"). Implicit EL variables get precedence over custom variables.

Give it a different name. E.g. var="parameter" and use ${parameter}.

<c:forEach items="${reportAdHoc.instances}" var="inst">
    <c:forEach items="${inst.parameter}" var="parameter">
        <td>${parameter.parameterName}</td>
    </c:forEach>
</c:forEach>

See also:


Further I'd suggest to rename the one and the other so that you end up with more self documenting code like follows:

<c:forEach items="${reportAdHoc.instances}" var="instance">
    <c:forEach items="${instance.parameters}" var="parameter">
        <td>${parameter.name}</td>
    </c:forEach>
</c:forEach>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文