将字段绑定到bean时索引超出范围(字符串问题?)

时间:2016-01-08 14:39:13

标签: xpages xpages-ssjs

我在重复控件中有一个与bean绑定的字段:

<xp:inputText
    value="#{requestBean.driverChanges[rowIndex]}"
    id="DriverChange">
</xp:inputText>

getDriverChanges()如下:

public Vector<String> getDriverChanges() {
    return driverChanges;
}

并设置如下:

setDriverChanges(doc.getItemValue("DriverChanges", Vector.class));

当DriverChanges字段中有值时,我的代码工作正常。但是,如果DriverChanges为空/空白,我会得到以下结果:

Error getting index 0
Array index out of range: 0

我尝试使用始终返回向量的代码计算xp:inputText字段中的值,但这会导致我的xp:inputText变为只读(我无法编辑/更改值并保存它。)

任何人对如何通过bean将字符串作为向量返回并且仍然保持xp:inputText可编辑有任何想法?

2 个答案:

答案 0 :(得分:1)

您必须为重复的所有rowIndexs初始化Vector driverChanges Vector driverChanges中的条目数必须至少与repeat的值条目数相同。

您的错误消息Array index out of range: 0告诉您Vector driverChanges存在但没有条目。

答案 1 :(得分:1)

我将Java bean中的getDriverChanges()更改为以下内容:

public Vector<String> getDriverChanges() {
    if (this.driverChanges.isEmpty()) {
        Vector<String> emptyVector = new Vector<String>(1);
        emptyVector.add("");
        this.driverChanges = emptyVector;
        return driverChanges;
    } else {
        return driverChanges;
   }
}

我强迫创建一个空矢量。我认为问题是当字段为空时,我的矢量以某种方式被转换为字符串。