问题
So, I have this code:
logic:iterate name="nameForm" property="name" id="nameId" indexId="index"
bean:write name="nameId" property="field1"/
bean:write name="nameId" property="field2"/
This works great because I'm receiving a "table of objects" so I can do the iterate without issues.
Now, on another page I need to do the same but the issue is I am not receiving a "table of objects" but an object itself. I tried it nonetheless and - as expected - got the error: Cannot create iterator for this collection
I've RTFM'd and I'm still more confused than before.
I get how the "name" inside the "logic:iterate" points to the form name in the struts-config, now I need to do the same with just one bean, any help please?
回答1:
You can use a bean name with the <logic:iterate>
, but it should be a collection or array, or implement Iterable. Here's the example of the tag usage.
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 intoHttpServletRequest
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>
来源:https://stackoverflow.com/questions/34788885/how-to-logiciterate-just-one-object