我正在尝试使用jstl迭代jsp中的对象列表。我希望每个param名称都有一个包含param值的下拉列表。
jsp代码:
<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>
控制器代码:
DTEJob dteJob2 = new DTEJob();
dteJob2.setParamName("ABC");
dteJob2.addTolistOfParamValue("val1");
dteJob2.addTolistOfParamValue("val2");
dteJob2.setDefault(true);
paramList.add(dteJob2);
model.addAttribute("listOfParams", paramList);
输出:
Yo YO和2个空降。
任何人都可以帮助我无法检索jstl中的值吗?任何帮助将不胜感激,因为我是jsp和jstl的新手。
我的bean类是:
private String paramName;
private List<String> listOfParamValue=new ArrayList<String>();
public List<String> getListOfParamValue() {
return listOfParamValue;
}
public String getParamName() {
return paramName;
}
答案 0 :(得分:1)
将var="param"
更改为var="p"
或param
以外的任何内容,因为param
用于访问请求参数。
<c:forEach var="p" items="${listOfParams}">
${param.paramName}
表示访问paramName
作为不存在的请求参数。
param:
将请求参数名称映射到单个值
答案 1 :(得分:0)
试试这个,
<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>
items
属性中的列表是独立的
答案 2 :(得分:0)
user3218114是正确的。问题是我使用的是“param”。。param用于访问请求参数。