strutでは、LISTタイプのデータを局にどのように転送するか
1781 ワード
ページ内の単一Stringタイプのデータをバックグラウンドに転送する場合はstruts 2を使用したことがある限り、間違いないと思います.
今日問題になったのは、リストタイプのデータをバックグラウンドに転送することです.
シーン:
新しいロールのページがあります.このページでは、任意の人を選択してこのロールに追加できます.
最終的に私が設計したクラスは以下の通りです.
まずは Action:(説明に必要なコードのみが残っています)
次はフロントコードをご覧ください.
userの後ろに下付き文字が付いていて、struts 2はこれに基づいてオブジェクトを作成します.
上記のHTMLコードは、最終的にroleに3つのUserを作成し、それらのIdはそれぞれ1です. 2 3 .
リストの個数を事前に知らない場合は、要データをフロントの配列に格納し、最後にコミットするときは、JavaScriptループを使って必要なinput要素を作成してからフォームをコミットすれば済む.
今日問題になったのは、リストタイプのデータをバックグラウンドに転送することです.
シーン:
新しいロールのページがあります.このページでは、任意の人を選択してこのロールに追加できます.
最終的に私が設計したクラスは以下の通りです.
まずは Action:(説明に必要なコードのみが残っています)
public class RoleAction {
private Role role;
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
このうち、Roleクラスは次のとおりです.public class Role {
private List<User> user;
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
}
使用したUserクラスは次のとおりです.public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
上記の構成に基づいて,ページ上で選択したユーザのIDをAction中のroleフィールドに対応するRoleクラスで使用されるUserクラスに渡すにはどうすればよいのだろうか.(この文は回り道で、実はクラスの含み関係です).次はフロントコードをご覧ください.
<input type='text' name='role.user[0].id' value='1' />
<input type='text' name='role.user[1].id' value='2' />
<input type='text' name='role.user[2].id' value='3' />
注意してください.ポイントはname属性の値です.roleはActionクラスのroleフィールドの名前、userはRoleクラスのuserフィールドの名前、idはUserクラスのidフィールドの名前です.userの後ろに下付き文字が付いていて、struts 2はこれに基づいてオブジェクトを作成します.
上記のHTMLコードは、最終的にroleに3つのUserを作成し、それらのIdはそれぞれ1です. 2 3 .
リストの個数を事前に知らない場合は、要データをフロントの配列に格納し、最後にコミットするときは、JavaScriptループを使って必要なinput要素を作成してからフォームをコミットすれば済む.