所以,我有这段代码:
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做同样的事情,请问有什么帮助吗?
答案 0 :(得分:0)
您可以将bean名称与<logic:iterate>
一起使用,但它应该是一个集合或数组,或者实现Iterable
。 Here是标记用法的示例。
在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"