从自定义标记返回值到jsp

时间:2013-12-17 11:04:52

标签: java jsp foreach jstl resultset

我正在练习自定义标签和jstl标签,现在我想要的是我的自定义标签应该返回一个ResultSet,而j​​stl应该迭代这个ResultSet。

我的自定义标记如下:     

 <connect:Query where="${param.id }"></connect:Query>

查询结果是结果集。

现在,如何返回此结果,以便可以迭代它。

2 个答案:

答案 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