1

論理的な問題があります。ユーザーは、フォームに任意の数のフィールドを追加できます。フォームの送信時に、すべてのフィールドの値を収集して ArrayList に格納する必要があります。問題は、フォームにフィールドが 1 つしかないのか、それとも 500 なのかがわからないことです。

個々のフォーム フィールドを区別する方法は、名前にインデックス番号を追加することです。そのため、フォームには name="field1"、name="field2" などのフィールドがあります。

これが私がこれまでに持っているコードです:

for (int i = 1; i < number of fields; i++) {
    while (request.getParameter("field" + Integer.toString(i)) != null) {
        Add to ArrayList
    }
}

フィールドの数を見つけるにはどうすればよいですか? それとも、この問題に対する別の解決策がありますか?

4

7 に答える 7

4

while ループを使用します。

int i=0;

while (request.getParameter("field" + Integer.toString(i)) != null) {

    // Add to ArrayList

    i++; // very important, don't forget this one
}

// i is the count of fields at this point
于 2012-05-01T13:09:48.603 に答える
0
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
  String parameterName = parameterNames.nextElement();
  if (parameterName.startsWith("field")) {
    Add request.getParameter(parameterName) to ArrayList
  }
}
于 2012-05-01T13:20:14.973 に答える
0

getParameterValues() を使用してすべての値を取得できます。これを行うには、ページ内のすべてのフィールドが同じ名前であることを確認する必要があります。このような

<input type="text" name="field" id="field1"/>
<input type="text" name="field" id="field2"/>
<input type="text" name="field" id="field3"/>
<input type="text" name="field" id="field4"/>

サーバー側では、このように書くことができます

String[] arrFields  = request.getParameterValues("field");
for(String field: arrField)
{
      // put the field into the arraylist.
}
于 2012-05-01T13:35:36.123 に答える
0

これで問題ありません:

i=1;

while (request.getParameter("field" + Integer.toString(i)) != null) {
        //Add to ArrayList
        i++;
}
于 2012-05-01T13:10:36.943 に答える
0

Java には 3 種類のループがあります。

  1. for ループ - 反復する必要があるエントリの数が正確にわかっている場合に使用します。
  2. while ループ - 数がわからない場合に使用します。0 ~ 500 の可能性があります。
  3. do while - 少なくとも 1 回実行する必要がある場合に使用し、その後は任意の回数実行します。

フィールドが存在するかどうかを確認し、0 を入力できるかどうかに応じて、while または do while を構築する方法を理解する必要があるようです。

于 2012-05-01T13:12:01.687 に答える
0

request.getParameterNames() を使用して、要素を循環させることができます

for(Enumeration e = request.getParameterNames();
 e.hasMoreElements(); ){
                String parameterName = (String)e.nextElement();
             //Your code logic with the parameter.

}

これは、最初にパラメーターの数を計算してから に追加する必要がないため、より効率的なロジックですArrayListnullNPEで遊ぶ必要はありません

于 2012-05-01T13:12:53.527 に答える
0

オブジェクトには、 sを列挙するメソッドや自明requestなメソッドなど、便利なメソッドが必要です。これらの両方を使用して、その数に関係なく、すべてのパラメーターの周りにループを設定できます。getParameterNamesStringgetParameterMap

HTH

于 2012-05-01T13:13:48.493 に答える