Sammidbest
Sammidbest

Reputation: 515

How to iterate a list of objects in jstl inside jsp

I am trying to iterate a list of objects in my jsp using jstl. I want that for each param name, a dropdown containing the param values appear.

jsp code:

<c:if test="${fn:length(listOfParams) gt 0}">
    <h2>Yo YO</h2>
    <c:forEach var="param" items="${listOfParams}">
        <h3>${param.paramName}</h3>
        <select name="${param.paramName}" id="${param.paramName}"
            class="target">
            <c:forEach var="listOfParamValue" items="${param.listOfParamValue}">
                <option><c:out value="${listOfParamValue}" /></option>
            </c:forEach>
        </select>
    </c:forEach>
</c:if>

Controller Code:

    DTEJob dteJob2 = new DTEJob();
    dteJob2.setParamName("ABC");
    dteJob2.addTolistOfParamValue("val1");
    dteJob2.addTolistOfParamValue("val2");
    dteJob2.setDefault(true);
    paramList.add(dteJob2);
    model.addAttribute("listOfParams", paramList);

OUTPUT:

Yo YO and 2 empty drop downs.

Can anyone help why I am unable to retrieve the values in jstl? Any help will be appreciated as I am new to jsp and jstl.

My bean class is:

private String paramName;
private List<String> listOfParamValue=new ArrayList<String>();

public List<String> getListOfParamValue() {
    return listOfParamValue;
}

public String getParamName() {
    return paramName;
} 

Upvotes: 2

Views: 9421

Answers (3)

Sammidbest
Sammidbest

Reputation: 515

user3218114 was correct.Issue was that I was using "param".param is used to access request parameter.

Upvotes: 0

Braj
Braj

Reputation: 46881

Change var="param" to var="p" or anything other than param because param is used to access request parameter.

<c:forEach var="p" items="${listOfParams}">

${param.paramName} means access paramName as request parameter that is not there.

Read more about JSP - Implicit Objects

param: Maps a request parameter name to a single value

Upvotes: 1

Santhosh
Santhosh

Reputation: 8217

Try like this ,

<c:if test="${not empty listOfParams}">
    <h2>Yo YO</h2>
    <c:forEach var="param" items="${listOfParams}">
        <h3>${param.paramName}</h3>
        <select name="${param.paramName}" id="${param.paramName}"
            class="target">
            <c:forEach var="temp" items="${2nd list name here}">
                <option><c:out value="${temp.listOfParamValue}"></c:out></option>
            </c:forEach>
        </select>
    </c:forEach>
</c:if>

The list inside items attribute is independent

Upvotes: 0

Related Questions