jstl使用c:foreach list <myclass>进行迭代

时间:2015-11-09 08:30:48

标签: java jsp jstl

简而言之:在我的JSP中,我需要遍历一个自定义bean类的列表,比如List,MyClass有key和value变量,以及getter和setter,使用c:foreach jstl

详细信息:类似这样的事情:

<c:forEach var="myObject" items="${model.pair_list}">
                    <li data-value="${myObject.key}">${myObject.value}</li>
                </c:forEach>

在Java代码中,我有:

List pairlist = new ArrayList(); // MyClass是一个简单的bean类,包含变量“key”和“value”,以及相同的getter和setter //在此列表中添加一些值 model.put(“pair_list”,pairlist);

任何提示如何使这个工作?

3 个答案:

答案 0 :(得分:1)

首先在Java中创建一个List MyClass并填充它

    List<MyClass> pairList = new ArrayList<>();

    //assuming key and value are of type String 
    //repeat the following 4 lines as much as needed
    MyClass myClass = new MyClass();
    myClass.setKey("...");
    myClass.setValue("...");
    pairList.add(myClass); 

    //Create an Map as you model and add pairList to it
    Map<String, List<MyClass>> model = new HashMap<>();
    model.put('pair_list', pairList);

    //Now you can add it to request for passing it to JSP/JSTL
    request.setAttribute('model', model);  

然后在JSTL中,它与您在问题中提到的完全相同

    <c:forEach var="myObject" items="${model.pair_list}">
        <li data-value="${myObject.key}">${myObject.value}</li>
    </c:forEach>

答案 1 :(得分:1)

考虑您的商品属性 你能删除吗? pairList?

示例,当您将数据从控制器传递到Java代码中的视图

List<YourObjectClass> YourArrayListData = new ArrayList<YourObjectClass>();
..........................
.... ADD DATA PROCESS ....
..........................
request.setAttribute("YourArrayList", YourArrayListData);

这是jsp文件上的jstl代码

<c:forEach items="${YourArrayList}" var="referenceIt" >
${referenceIt.property}
</c:forEach>

答案 2 :(得分:1)

在您的servlet中,只需将列表放在您发送给Jsp的请求

根据要求

request.setAttribute("pair_list", pairlist);

注意:使用forward not sendRedirect

在你的JSP中: -

<c:forEach var="myObject" items="${pair_list}">
    <li data-value="${myObject.key}">${myObject.value}</li>
</c:forEach>