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 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?

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459

1 Answers1

1

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>
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555