【问题标题】:jstl iterate using c:foreach list<MyClass>jstl 使用 c:foreach list<MyClass> 进行迭代
【发布时间】:2016-02-09 20:39:47
【问题描述】:

简而言之:在我的 JSP 中,我需要使用 c:foreach jstl 遍历自定义定义的 bean 类列表,例如 List,MyClass 具有键和值变量,以及相同的 getter 和 setter

详情:类似这样:

<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);

任何提示如何使它工作?

【问题讨论】:

    标签: java jsp jstl


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      首先在 Java 中创建 MyClassList 并填充它

          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>
      

      【讨论】:

        【解决方案3】:

        考虑您的 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>
        

        【讨论】:

        • 这就是我所做的,但没有奏效。让我再试一次,我会解决调试时遇到的问题
        • 我的 Java 代码中有一个条件阻止它被执行:model.put('pair_list', pairList);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2013-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多