我正在练习自定义标签和jstl标签,现在我想要的是我的自定义标签应该返回一个ResultSet,而jstl应该迭代这个ResultSet。
我的自定义标记如下:
<connect:Query where="${param.id }"></connect:Query>
查询结果是结果集。
现在,如何返回此结果,以便可以迭代它。
答案 0 :(得分:3)
我通过执行以下操作解决了这个问题:
为结果构建包装器
public class Row {
String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String toString() {
return value;
};
}
在标签处理程序中,我以集合的形式添加了元素,因为forEach适用于对象的集合。
public int doStartTag() throws JspException {
// some code here
ArrayList<Row> rowList = new ArrayList<>();
while(set.next()){
//pageContext.getOut().print("<br>" + set.getString("empName"));
Row currRow = new Row();
currRow.setValue(set.getString("empName"));
rowList.add(currRow);
}
pageContext.setAttribute("result", rowList);
// some more code
}
在jsp中我处理如下的属性
<connect:Query where="${param.id }"></connect:Query>
<c:forEach var="value" items="${result }">
<c:out value="${value }"></c:out>
</c:forEach>
答案 1 :(得分:2)
您可以将结果集设置为查询标记中的某个范围属性。为此,请使用tag variables。