2012-05-03 9 views
1

入力テキスト1を1で追加する場合は2ボタン1を、入力テキスト1を削除する場合は2ボタンを使用してVFページを作成しました。 プロセスが動作しています。しかし、それが最後のinputtextに来るとき、それは間違いです。例えばのため:1,2,3 のinputText 3を追加した場合、私は3,2を削除することができていますが、それを介しては、範囲外のエラー リストインデックスだとき、私は第一を削除する場合:1リストインデックスが範囲外です:1

は私のコード

です

公共PageReferenceオブジェクトは、(キャンセル){

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; 
} 

は、誰もが解決策を見つけると、コードで間違っているものを私に伝えることができます。

おかげで アヌ

答えて

2

ifの終わりにi++電話をかける:

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; 
} 
+0

なぜ私はそれをとても複雑にしませんでした。しかし、それはあなたの返事のために働いています。 –

+0

待って、前にループがありませんでしたか?または、私はちょうど "if(i

0

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

関連する問題