1

如何迭代会话并将每个提交值保持在同一页面中直到会话结束?

<html>
<body>
<s:form action="verify">
    <s:textfield name="stuname" label="Enter Username" /><br>
    <s:textfield name="stuage" label="Enter Age" /><br>
    <s:textfield name="stumarks" label="Enter Marks" /><br>
    <s:textfield name="country" label="Enter Country" /><br> 
    <s:submit value="Click" id="submit"  /> 
</s:form>
<s:iterator>
Name:<s:property value="#session.a" /><br>
Age:<s:property value="#session.b" /> <br>
Marks:<s:property value="#session.c" /><br>
Country:<s:property value="#session.d" />
</s:iterator>
</body>
</html>
4

2 回答 2

0

不需要迭代器。
在您的操作中,将值设置为会话属性。
在 Jsp 中使用那里的名称检索它们,例如:

Name:<s:property value="#session.a" /><br>
Age:<s:property value="#session.b" /> <br>
Marks:<s:property value="#session.c" /><br>
Country:<s:property value="#session.d" /> 

这应该做。

更新1:

要显示输入的所有值集:
1) 创建一个POJO来存储所有这些值(调用Person)。
2)在你的行动中维护一个arraylist of Person对象。
3)在每次提交时创建一个新的人员对象并将其添加到人员列表中。
4) 在 jsp 中遍历人员列表并显示所有值。
不需要会话。尽可能避免使用会话。

于 2013-06-12T06:49:57.017 回答
0

在 JSP 和实际操作中,您正在处理对象或作为对象数组的对象。使用什么结构无关紧要,对象具有诸如NameAge、 之类的属性又有什么关系MarksCountry它们属于一个名为 it 的实体Person

 @Entity
 public class Person {
   @Id
   @GeneratedValue
   private int id;
   private String name;
   public int getId() {
     return id;
   }
   public void setId(int id) {
     this.id = id;
   }
   public String getName() {
     return name;
   }
   public void setName(String name) {
     this.name = name;
   }
   ...
   //other fields
} 

现在,会话应该包含许多这样的对象,因此您应该创建一个列表并将其放入会话中。

public List<Person> getPersonList() {
  List<Person> personList = (List<Person>) session.get("personList");
  if (personList == null) {
    personList = new ArrayList<Person>();
    session.put("personList", personList);
  }
  return personList;
}

然后,在操作中,您应该有一个映射到表单字段的对象,该对象在提交时保存到会话中。它是同一个Person对象。

private Person person = new Person();
//public getters and setters

现在地图的形式

<s:form action="verify">
  <s:textfield name="person.name" label="Enter Username" /><br>
  <s:textfield name="person.age" label="Enter Age" /><br>
  <s:textfield name="person.marks" label="Enter Marks" /><br>
  <s:textfield name="person.country" label="Enter Country" /><br> 
  <s:submit value="Click" id="submit"  /> 
</s:form>

此表单不会显示值(因为值已映射到 action 属性Person并且它是空的)

如何填写我在前面的例子personList中已经解释过了。现在要从中迭代值(人),即在会话中使用

<s:iterator value="#session.personList">
  Name:<s:property value="name" /><br>
  Age:<s:property value="age" /> <br>
  Marks:<s:property value="marks" /><br>
  Country:<s:property value="country" /><br>
</s:iterator>
于 2013-06-13T18:48:10.753 回答