如何“逻辑:迭代”只有一个对象?

时间:2016-01-14 11:48:48

标签: java jsp collections struts javabeans

所以,我有这段代码:

logic:iterate name="nameForm" property="name" id="nameId" indexId="index"
bean:write name="nameId" property="field1"/
bean:write name="nameId" property="field2"/

这很有效,因为我收到了一个“对象表”,所以我可以毫无问题地进行迭代。

现在,在另一个页面上我需要做同样的事情,但问题是我没有收到“对象表”,而是一个对象本身。 尽管如此,我尝试了它 - 正如预期的那样 - 得到错误:无法为此集合创建迭代器

我已经RTFM了,而且我比以前更加困惑 我得知“logic:iterate”里面的“name”如何指向struts-config中的表单名称,现在我需要对一个 bean做同样的事情,请问有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以将bean名称与<logic:iterate>一起使用,但它应该是一个集合或数组,或者实现IterableHere是标记用法的示例。

  

在Struts中,您可以使用logic:iterate标记来迭代集合。这是一个例子:

     

迭代列表/数组(对象)

     

创建包含少量"user"个对象的普通列表,并将其存储为名为HttpServletRequest的{​​{1}}。

"listUsers"
     

在逻辑标记内,您可以使用public class User{ String username; String url; //getter and setter methods } ... public class PrintMsgAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { List<User> listUsers = new ArrayList<User>(); listUsers.add(new User("user1", "http://www.user1.com")); listUsers.add(new User("user2", "http://www.user2.com")); listUsers.add(new User("user3", "http://www.user3.com")); listUsers.add(new User("user4", "http://www.user4.com")); request.setAttribute("listUsers", listUsers); return mapping.findForward("success"); } } 属性("name")来获取列表值,而使用listUsers属性来显示对象属性值。

     
"property"
     

enter image description here