Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Struts2视图中显示列表_Java_Jakarta Ee_Struts2 - Fatal编程技术网

Java 在Struts2视图中显示列表

Java 在Struts2视图中显示列表,java,jakarta-ee,struts2,Java,Jakarta Ee,Struts2,我使用struts2作为MVC框架,但我遇到了一个问题,我的问题在行动中,我定义了 一种称为“公司”的模式,其定义如下: class Company { private String name; private String address; ... private List<Staff>staffs; ... } class Staff { private String name; private int age; .... } 如何在视图

我使用struts2作为MVC框架,但我遇到了一个问题,我的问题在行动中,我定义了 一种称为“公司”的模式,其定义如下:

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

class Staff
{
   private String name;
   private int age;
   ....
}
如何在视图中显示整个公司和员工信息(视图是JSP文件)?我在UI中期望的是:

Company info
  company name                company address...
Staff 1 info
   staff name                 staff age...
Staff 2 info
   staff name                 staff age...
如何定义jsp文件?虽然可以使用OGNL显示公司信息,但员工信息如何,因为它是一个列表,其编号不确定

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

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

  }
}
<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> 

公司信息:公司名称:公司地址:
工作人员1信息:。。。。
职员2信息:。。。
是否可以使用“表单”或“输入”定义员工信息?

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

迭代器将迭代一个值。iterable值可以是以下任意值:
java.util.Collection、java.util.Iterator


有关更多详细信息,请参阅迭代器。

要获取公司名称和地址,只需执行以下操作即可

 <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>

工作人员


您可以指向列表或映射的元素,这些元素使用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>

员工信息:
姓名:
年龄:


除了在UI中显示员工信息外,我还希望员工可以编辑,例如我可能会将“表单”定义为以下
公司信息:公司名称:公司地址:员工1信息:。。。。职员2信息:是否可以使用“表单”或“输入”定义员工信息?是的,您可以使用标记来完成此操作。是的,这正是我所期望的,谢谢,顺便问一下,您是否可以推荐任何关于在这种情况下如何使用OGNL的教程?例如在列表、地图或任何其他常用java数据中structure@Chailie在维基上有一些,但它们很少;)抱歉@Chailie,没有。但它们总是一样的<编码>[%{stat.index}]
用于数字索引(列表),
['%{stat.index}]
用于字符串键(映射)。请随意深入我的OGNL和Struts2标签问题(我的个人资料->标签->点击标签->浏览答案),也许你会发现一些有趣的事情:)