struts2迭代器如何让它工作?

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

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

private List<Company> listAllCompanys;
Getters and setters...

public String listAllCompanys() throws Exception {

    CompanyDaoHibernate dao = new CompanyDaoHibernate();
    listAllCompanys = dao.getListOfCompanies();
    System.out.println("Printing from CompanyManagmentAction...");

    return SUCCESS;
}
``` `struts.xml` :


companyAddUpdate.jsp

这是我的 `companyAddUpdate.jsp` :
<s:form action="newCompany">
    <s:actionerror/> 
    <s:textfield name="company.companyName"    label="Company's name" />
    <s:textfield name="company.address"        label="Address" />
    <s:textfield name="company.email"          label="Email" />
    <s:textfield name="company.website"        label="Website" />
    <s:textfield name="company.phoneNumber"    label="Phone Number" />
    <s:textfield name="company.comment"        label="Comment" />
    <s:textfield name="company.fax"            label="Fax" />
    <s:submit value="Register" />

</s:form>

<h2>Contacts</h2>

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

7eumitmz

7eumitmz1#

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

public class CompanyAction extends ActionSupport implements Preparable {

private List<Company> listAllCompanys;

//Getters and setters...

public List<Company> getListAllCompanys() {
  return listAllCompanys;
}

@Override
public void prepare() throws Exception {
    CompanyDaoHibernate dao = new CompanyDaoHibernate();
    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;
}

这个 Company 类还应该有getter和setter。
在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>

相关问题