1

struts 1.2 を使用する古いアプリケーションを扱っています。何らかの理由で、純粋な html フォームを使用して struts アクションに送信しています。例えば:

testAction.do のコンテンツ出力については、それ自体にサブミットしようとします。

項目 1 項目 2

次に、フォーム Bean TestForm を testAction に関連付けます。

ユーザーが「送信」をクリックした後に myitem1 から値を取得するように、フォームでプロパティを指定する方法がわかりません

getMyitem1()、setMyitem1(String[] items)、getSelectedMyitem1()、setSelectedMyitem1(String[] items)を追加してみました

これらの set メソッドは、ページがロードされたときにのみ呼び出されます。

struts 1.x での ActionForm の理解は間違っているに違いないと思います。

アドバイスしてください、ありがとう。

4

1 に答える 1

6

最初に、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か?)。

于 2010-04-20T14:03:14.213 に答える