我对XPage有一个重复控制:
<xp:repeat id="DriverRepeat" var="rowData" indexVar="rowIndex" value="#{javascript:requestBean.getDrivers();}">
<xp:label value="#{javascript:rowData.driverInfo}" />
<xp:inputText value="#{requestBean.driverChanges}" />
</xp:repeat>
我有一个绑定到XPage的托管bean(requestBean)。我可以使用value="#{requestBean.driverChanges}"
和我的Java bean读取/保存其他非重复控制值:
private String driverChanges;
吸气/ setter方法:
public void setDriverChanges(String driverChanges) {
this.driverChanges = driverChanges;
}
public String getDriverChanges() {
return driverChanges;
}
加载值:
setDriverChanges(doc.getItemValueString("DriverChanges"));
保存价值:
doc.replaceItemValue("DriverChanges", driverChanges);
但这不适用于重复控制字段,因为它们是多值的。我尝试将driverChanges
设为Vector,但我不确定如何使用托管bean构造inputText字段值。提前感谢任何想法。
答案 0 :(得分:4)
根据您的问题和您的意见,您有一个requestBean,它代表一个Request文档。该文档有两个多值字段
多值列表的每个元素代表一个驱动程序。第一个驱动程序的信息位于DriverInfo的第一个元素中,第一个驱动程序的更改位于DriverChanges的第一个元素中,依此类推。
DriverInfo DriverChanges
driver1 changes1
driver2 changes2
driver3 changes3
您想创建一个重复控件,在单独的行中显示每个驱动程序的数据
将您的requestBean更改为
public class RequestBean implements Serializable {
...
private Vector<String> driverInfo;
private Vector<String> driverChanges;
public Vector<String> getDrivers() throws Exception {
...
setDriverInfo(doc.getItemValue("DriverInfo"));
setDriverChanges(doc.getItemValue("DriverChanges"));
return driverInfo;
}
public void setDriverInfo(Vector<String> driverInfo) {
this.driverInfo = driverInfo;
}
public Vector<String> getDriverInfo() {
return driverInfo;
}
public void setDriverChanges(Vector<String> driverChanges) {
this.driverChanges = driverChanges;
}
public Vector<String> getDriverChanges() {
return driverChanges;
}
public void save() throws Exception {
...
doc.replaceItemValue("driverInfo", getDriverInfo());
doc.replaceItemValue("driverChanges", getDriverChanges());
doc.save();
}
}
并将重复控件更改为
<xp:repeat
id="DriverRepeat"
var="rowData"
indexVar="rowIndex"
value="#{javascript:requestBean.getDrivers()}">
<xp:label value="#{rowData}" />
<xp:inputText value="#{requestBean.driverChanges[rowIndex]}" />
<br />
</xp:repeat>
requestBean.getDrivers()
返回一个driverInfos向量。 rawData
保存重复内部当前驱动程序的driverInfo
requestBean.driverChanges[rowIndex]
调用requestBean的方法getDriverChanges()
,返回一个driverChanges的Vector,并仅使用rowIndex选择当前驱动程序的值。