struts2迭代器如何让它工作?

mpbci0fu  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(340)

我在用struts2 <iterator> 标记以在jsp中显示值。方法正在被调用,但未显示任何结果。它在控制台中打印我需要的所有数据,但不在jsp中打印。
我打电话来 localhost\listAddCompany.php 我做错了什么?
方法是这样的 listAllCompanys() :

  1. private List<Company> listAllCompanys;
  2. Getters and setters...
  3. public String listAllCompanys() throws Exception {
  4. CompanyDaoHibernate dao = new CompanyDaoHibernate();
  5. listAllCompanys = dao.getListOfCompanies();
  6. System.out.println("Printing from CompanyManagmentAction...");
  7. return SUCCESS;
  8. }
  9. ``` `struts.xml` :


companyAddUpdate.jsp

  1. 这是我的 `companyAddUpdate.jsp` :
  1. <s:form action="newCompany">
  1. <s:actionerror/>
  2. <s:textfield name="company.companyName" label="Company's name" />
  3. <s:textfield name="company.address" label="Address" />
  4. <s:textfield name="company.email" label="Email" />
  5. <s:textfield name="company.website" label="Website" />
  6. <s:textfield name="company.phoneNumber" label="Phone Number" />
  7. <s:textfield name="company.comment" label="Comment" />
  8. <s:textfield name="company.fax" label="Fax" />
  9. <s:submit value="Register" />
  10. </s:form>
  11. <h2>Contacts</h2>

<s:iterator value="listAllCompanys" var="company">
</s:iterator>

7eumitmz

7eumitmz1#

迭代器标记迭代标记体中的所有内容。不会显示任何结果,因为迭代器标记体为空。对于需要数据才能工作的迭代器和其他struts标记,应该填充 value 属性并为变量提供getter。
当然,如果您首先调用将结果返回给jsp的操作,这将起作用。在某些情况下,如果你有 validation 以及 workflow 堆栈上的拦截器即使没有执行任何操作,action类也应该填充集合。
例如,如果在提交表单后出现验证错误 input 返回结果。在这种情况下,您可以使您的操作类实现 Preparable 把代码移到那里去填清单。

  1. public class CompanyAction extends ActionSupport implements Preparable {
  2. private List<Company> listAllCompanys;
  3. //Getters and setters...
  4. public List<Company> getListAllCompanys() {
  5. return listAllCompanys;
  6. }
  7. @Override
  8. public void prepare() throws Exception {
  9. CompanyDaoHibernate dao = new CompanyDaoHibernate();
  10. listAllCompanys = dao.getListOfCompanies();
  11. System.out.println("Populated listAllCompanys from " +getClass().getSimpleName()+ " size: " +listAllCompanys.size());
  12. }
  13. public String listAllCompanys() throws Exception {
  14. System.out.println("The action " + ActionContext.getContext().getName()+ " is called");
  15. return SUCCESS;
  16. }

这个 Company 类还应该有getter和setter。
在jsp中:

  1. <h2>Contacts</h2>
  2. <table>
  3. <thead>
  4. <tr>
  5. <th>Company's name</th>
  6. <th>Address</th>
  7. <th>Email</th>
  8. <th>Website</th>
  9. <th>Phone Number</th>
  10. <th>Comment</th>
  11. <th>Fax</th>
  12. </tr>
  13. </thead>
  14. <tbody>
  15. <s:iterator value="listAllCompanys">
  16. <tr>
  17. <td><s:property value="companyName"/></td>
  18. <td><s:property value="address"/></td>
  19. <td><s:property value="email"/></td>
  20. <td><s:property value="website"/></td>
  21. <td><s:property value="phoneNumber"/></td>
  22. <td><s:property value="comment"/></td>
  23. <td><s:property value="fax"/></td>
  24. </tr>
  25. </s:iterator>
  26. </tbody>
  27. </table>
展开查看全部

相关问题