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

jstl iterate using c:foreach list<MyClass>

在 short:In 我的 JSP 中,我需要遍历自定义 bean class 的列表,像 List,MyClass 有键和值变量,还有 getter 和 setter同样,使用 c:foreach jstl

详细信息:像这样:

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

在 Java 代码中,我有:

列表pairlist = new ArrayList(); //MyClass 是一个简单的 bean class,带有变量 "key" 和 "value",以及相同的 getter 和 setter //在此列表中放入一些值 model.put("pair_list", 配对列表);

任何提示如何让它工作?

首先在 Java 创建一个 ListMyClass 并填充它

    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>

考虑您的 items 属性
你能删除 .对表 ?

例如,当您将数据从控制器传递到 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>

在您的 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>