1

我创建了一个带有 2 个按钮 1 的 VF 页面,用于添加 inputtext 1 by 1 和 2nd 以删除 inputtext 1 by 1。该过程正在工作 1 点添加和删除。但是当谈到最后一个输入文本时,它是一个错误。例如:如果添加了 3 inputtext 1,2,3 我可以删除 3,2 但是当我删除第一个时它通过是一个错误 List index out of bounds: 1

这是我的代码

公共页面引用取消(){

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

列表中的第一个元素位于索引 0,而不是索引 1。它在有多个元素时起作用,因为当您执行 list.remove(1) 时实际上是在删除列表中的第二个元素。如果要删除第一个元素,则应该改为 list.remove(0) 。

于 2012-05-03T08:06:16.633 回答