1

入力テキストを1つずつ追加するための2つのボタン1と、入力テキストを1つずつ削除するための2番目のボタンを備えたVFページを作成しました。しかし、最後の入力テキストになると、それはエラーです。例:3 inputtext 1,2,3を追加した場合、3,2を削除できますが、1番目を削除すると、エラーリストインデックスが範囲外になります:1

これが私のコードです

public PageReference cancel(){

system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
  if( i<eqLstNew.size()){
    i++;
    system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
    system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
    eqLstNew.remove(i);

  }
  return null;
}

誰かが解決策を見つけて、コードの何が悪いのか教えてもらえますか?

ありがとうアヌ

4

2 に答える 2

2

i++の最後に電話をかけますif

public PageReference cancel() {
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
  if( i<eqLstNew.size()){
    system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
    system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
    eqLstNew.remove(i);
    i++;
  }
  return null;
}

しかし、なぜこれに変数を使用しているのかわかりません。常に最初の要素を返したい場合は、次のように記述してください。追加の変数(常に同じ値を持つ)を使用すると、より複雑になります。

public PageReference cancel() {
  if(eqLstNew.size() > 0){
    eqLstNew.remove(0);
  }
  return null;
}
于 2012-05-03T08:03:50.820 に答える
0

リストの最初の要素は、インデックス1ではなくインデックス0にあります。list.remove(1)を実行すると、リストの2番目の要素が実際に削除されるため、複数の要素がある場合に機能します。最初の要素を削除する場合は、代わりにlist.remove(0)を実行する必要があります。

于 2012-05-03T08:06:16.633 に答える