1

我正在使用struts2作为MVC框架,但是我遇到了一个问题,我的问题在Action中,我定义了一个名为“Company”的模型,它的定义如下:

class Company
{
  private String name;
  private String address;
  ...
  private List<Staff>staffs;
  ...
}

class Staff
{
   private String name;
   private int age;
   ....
}

动作如下

class Action
{
  private Company company;
  public String execute(){

  }
}

如何在视图中显示整个公司和员工信息(视图是 JSP 文件)?我在 UI 中的期望是:

Company info
  company name                company address...
Staff 1 info
   staff name                 staff age...
Staff 2 info
   staff name                 staff age...

jsp文件怎么定义?虽然OGNL可以显示公司信息,但是员工信息呢,因为是List,个数不定

有人告诉我我可以使用迭代器,但我的要求是:除了在 UI 中显示员工信息,我还希望让员工可以编辑,例如我可能会定义“表单”如下

<s:form> 
    Company info: Company Name:<s:input name="company.name"/> Company Address:<s:input name="company.name"/> 
   Staff 1 info: .... 
   Staff 2 info: ... 
 <s:form> 

是否可以用“表格”或“输入”来定义员工信息?

4

3 回答 3

1

要获取公司名称和地址,只需执行

 <s:property value="company.name"/>
 <s:property value="company.address"/>

并使用 struts 迭代器标签获取员工列表

<s:iterator value="company.staffs" status="stat">
   Staff <s:property value="%{#stat.index}" /> 
      <s:property value="name" />  &nbsp;  <s:property value="age" />
      </br>

</s:iterator>
于 2013-04-10T03:56:23.177 回答
1

您可以使用 Struts2 Iterator 标记对列表进行迭代,并在您的 JSP 页面上显示所有信息

迭代器将迭代一个值。可迭代值可以是以下任何一种:java.util.Collection, java.util.Iterator

有关更多详细信息,请参阅迭代器标记示例

于 2013-04-10T03:34:01.810 回答
1

您可以指向 Lists 或 Maps 的元素,并使用 IteratorStatus 对象指定它们的索引:

<s:property value="company.name"/>
<s:property value="company.address"/>

<s:iterator value="company.staffs" status="stat">

    <span>Staff <s:property value="%{#stat.index}" /> info: </span>

    <label>name: </label>
    <s:textfield name="company.staffs[%{#stat.index}].name" />

    <label>age: </label>
    <s:textfield name="company.staffs[%{#stat.index}].age" />

    <br/>

</s:iterator>
于 2013-04-10T07:46:06.323 回答