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オブジェクトが、Age、 などのプロパティを持ちMarksCountryそれらが 1 つのエンティティ名 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>

このフォームは値を表示しません (値がアクション プロパティにマップされ、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 に答える
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 に答える