【问题标题】:Struts2 iterator how to get it to work?Struts2迭代器如何让它工作?
【发布时间】:2015-05-01 15:12:33
【问题描述】:

我正在使用 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:

    <action name="listAddCompany" class="com.handyman.web.CompanyManagementAction"
        method="listAllCompanys">
        <result name="success">companyAddUpdate.jsp</result>
    </action>

这是我的

companyAddUpdate.jsp:

<h1>Add / Update Company</h1>

    <s:form action="newCompany">
<!--        // id, Company_name, Address, Email, Website, Phone_number, Comment, Fax -->

        <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><table>
<tbody><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>
<tr>
    <td><s:property value="companyName"></s:property></td> 
    <td><s:property value="address"></s:property></td>
    <td><s:property value="email"></s:property></td>
    <td><s:property value="website"></s:property></td>
    <td><s:property value="phoneNumber"></s:property></td>
    <td><s:property value="comment"></s:property></td>
    <td><s:property value="fax"></s:property></td>

</tr>  

</tbody></table>

【问题讨论】:

    标签: java html jsp struts2


    【解决方案1】:

    迭代器标签迭代标签主体内的所有内容。由于您的迭代器标记正文为空,因此未显示任何结果。对于需要数据才能工作的迭代器和其他 struts 标记,您应该填充在 value 属性中使用的集合,并为变量提供一个 getter。

    当然,如果您首先调用将结果返回给 JSP 的操作,这将起作用。在某些情况下,如果堆栈上有validationworkflow 拦截器,即使没有执行任何操作,您的操作类也应该填充集合。

    例如,如果在提交表单后出现验证错误并返回 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>
    

    【讨论】:

    • 得到它的工作,谢谢!我查看了您的 JSP 并注意到了我的问题,它是迭代器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 2012-08-28
    • 2014-08-02
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多