如何"logic:iterate"只有一个对象?

How to "logic:iterate" just one object?

所以,我有这个代码:

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

这很好用,因为我收到 "table of objects" 所以我可以毫无问题地进行迭代。

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

我已经 RTFM 了,但我仍然比以前更困惑。
我知道 "logic:iterate" 中的 "name" 是如何指向 struts-config 中的表单名称的,现在我只需要对 one[=24= 做同样的事情] bean,有什么帮助吗?

你可以使用带有<logic:iterate>的bean名称,但它应该是一个集合或数组,或者实现Iterable. Here的标签用法示例。

In Struts, you can use logic:iterate tag to iterate over collections. Here’re the example:

Iterate over a list/array (Object)

Create a normal list with few "user" objects and store it into HttpServletRequest as name "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");
  }

}

Inside the logic tag, you can use the "name" attribute (listUsers) to get the list value, while "property" attribute to display the object property value.

<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<html>
<head>
</head>
<body>
<h1>Struts <logic:iterate> example</h1>

<logic:iterate name="listUsers" id="listUserId">
<p>
  List Users <bean:write name="listUserId" property="username"/> , 
  <bean:write name="listUserId" property="url"/>
</p>
</logic:iterate>

</body>
</html>