最初に、Struts がフォーム送信を管理する方法を少し明確にしましょう。
- HTML フォームを使用していくつかの値をアクションに送信します (この場合、アクションは Struts アクションで、通常は *.do です)。
- Struts は ActionServlet (web.xml で指定) によってリクエストを受け取ります。
- struts-config.xml ファイルで指定した情報に基づいて、特定の Action クラス (要求に一致するもの) が選択されます。
- 識別されたアクションに基づいて、アクション フォームが取得されます (ここでも、struts-config.xml で指定した情報に基づいています)。
- この ActionForm のインスタンスが作成または再利用されます (フォームのスコープに基づいて: リクエストとセッション)。
- リクエストからのデータはフォーム プロパティにバインドされます。
- アクションの execute(...) メソッドは、このフォーム オブジェクトで呼び出されます。
現在、バインドは名前に基づいて行われます。フォーム内のプロパティの名前と一致するリクエスト パラメータの名前。リクエスト パラメータの名前は、もちろん、送信した HTML フォームの入力フィールドの名前です。
たとえば、 nametest
で入力を送信する場合、アクション フォーム クラスに次のアクセサーが必要です (プロパティ named の JavaBeans 規則を尊重しますtest
)。
public void setTest(String val) { ... }
public String getTest() { ... }
パラメータに値のリストが添付されているtest
場合(チェックボックスリストについて言及しているため、これはあなたの場合だと思います)、アクセサーは配列型に変更されます。
public void setTest(String[] val) { ... }
public String[] getTest() { ... }
しかし、ここでも名前がマッチングに使用され、常に名前です。
項目 1 項目 2 で何をしようとしているのかわかりません。これらは入力用に送信された値ですか ( に相当しますtest
か?)。