Skip to content Skip to sidebar Skip to footer

Struts2 Iterator How To Get It To Work?

I am using Struts2 tag to display value in JSP. Method is getting called, but no results were displayed. It prints in console all the data that I need but not in J

Solution 1:

The iterator tag iterates everything inside the body of the tag. No results is displayed because your iterator tag body is empty. For the iterator and other struts tags that need data to work you should populate the collection that used in the value attribute and provide a getter for the variable.

Of course this will work if you call the action first that returns a result to the JSP. In some cases if you have a validation and workflow interceptors on the stack your action class should populate the collection even if no action is executed.

For example, if after submitting a form you have validation errors and input result is returned. In this case you can make your action class to implement Preparable and move the code tho fill the list there.

publicclassCompanyActionextendsActionSupportimplementsPreparable {

private List<Company> listAllCompanys;

//Getters and setters...public List<Company> getListAllCompanys() {
  return listAllCompanys;
}

@Overridepublicvoidprepare()throws Exception {
    CompanyDaoHibernatedao=newCompanyDaoHibernate();
    listAllCompanys = dao.getListOfCompanies();
    System.out.println("Populated listAllCompanys from " +getClass().getSimpleName()+ " size: " +listAllCompanys.size());

}

public String listAllCompanys()throws Exception {
    System.out.println("The action " + ActionContext.getContext().getName()+ " is called");
    return SUCCESS;
}

The Company class should also have getters and setters.

In JSP:

<h2>Contacts</h2>
<table>
<thead>
<tr>
<th>Company's name</th>
<th>Address</th>
<th>Email</th>
<th>Website</th>
<th>Phone Number</th>
<th>Comment</th>
<th>Fax</th>
</tr>
</thead>
<tbody>
<s:iterator value="listAllCompanys">
<tr>
    <td><s:property value="companyName"/></td> 
    <td><s:property value="address"/></td>
    <td><s:property value="email"/></td>
    <td><s:property value="website"/></td>
    <td><s:property value="phoneNumber"/></td>
    <td><s:property value="comment"/></td>
    <td><s:property value="fax"/></td>
</tr>  
</s:iterator>
</tbody>
</table>

Post a Comment for "Struts2 Iterator How To Get It To Work?"