【问题标题】:Return value from custom tag to jsp从自定义标签返回值到jsp
【发布时间】:2014-01-05 02:46:09
【问题描述】:

我正在练习自定义标签和 jstl 标签,现在我想要的是我的自定义标签应该返回一个 ResultSet 并且 jstl 应该遍历这个 ResultSet。

我的自定义标签是这样的:

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

查询的结果是结果集。

现在,如何返回此结果,以便对其进行迭代。

【问题讨论】:

    标签: java jsp foreach jstl resultset


    【解决方案1】:

    我通过以下方式解决了这个问题:

    为结果构建包装器

        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>
    

    【讨论】:

    • 我认为没关系。我只会使名为“result”的页面范围属性可配置:。这样,您可以避免名称冲突,并且您的标签的用户知道结果存储在哪里。
    【解决方案2】:

    您可以将结果集设置为查询标记中的某个范围属性。为此,请使用tag variables

    【讨论】:

    • 您的回答很有帮助,给了我一个想法,我添加了完整的答案。请指出我是否在那里做错了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2014-11-16
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多