Reputation: 515
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
Reputation: 515
user3218114 was correct.Issue was that I was using "param".param is used to access request parameter.
Upvotes: 0
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
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