2015-11-09 45 views
0

简而言之:在我的JSP中,我需要迭代自定义bean类的列表,如List,MyClass具有键和值变量,以及getter和setter相同,使用C:的foreach JSTLjstl iterate using c:foreach list <MyClass>

详细信息:是这样的:

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

在Java代码中,我有:

名单成对列表=新的ArrayList(); // MyClass是一个简单的bean类,其中包含变量“key”和“value”,以及相同的getter和setter //在此列表中放入几个值 model.put(“pair_list”,pairlist);

任何提示如何得到这个工作?

回答

1

首先,在Java中创建的MyClass一个List和填充它

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

考虑您的项目属性
你可以删除。 pairList?

例如,当你通过从控制器的数据,查看Java代码

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

这是在JSP文件

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

这是我做什么,但没有工作。让我再试一次,我会回来与我调试时得到的问题 –

+0

所有三个答案为我工作.. 谢谢:) –

+0

不客气,你发现什么错误,。 – ZenithS

1

的JSTL代码会在你的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> 
+0

这就是我所做的,但不适合我 –