我在重复控件中有一个与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可编辑有任何想法?
答案 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;
}
}
我强迫创建一个空矢量。我认为问题是当字段为空时,我的矢量以某种方式被转换为字符串。