gpt4 book ai didi

java - 使用托管 Java Bean 在重复控件中设置/获取值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:56 24 4
gpt4 key购买 nike

我的 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>

我有一个托管 bean (requestBean) 绑定(bind)到我的 XPage。我能够使用 value="#{requestBean.driverChanges}" 在我的 Java bean 中读取/保存其他非重复控制值:

private String driverChanges;

setter/getter / setter/getter :

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 字段值。提前感谢您的任何想法。

最佳答案

根据您的问题和评论,您有一个代表请求文档的 requestBean。该文档有两个多值字段

  • 司机信息
  • DriverChanges

多值列表的每个元素代表一个驱动程序。第一个司机的信息在 DriverInfo 的第一个元素中,第一个司机的更改在 DriverChanges 的第一个元素中,依此类推。

DriverInfo    DriverChanges
driver1 changes1
driver2 changes2
driver3 changes3

您想创建一个重复控件,像这样在单独的行中显示每个驱动程序的数据

enter image description here

将您的 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 vector 。 rawData 在 repeat 中保存当前驱动程序的 driverInfo。
requestBean.driverChanges[rowIndex] 调用 requestBean 的方法 getDriverChanges(),返回一个 driverChanges vector ,并只选择当前驱动程序的 rowIndex 值。

关于java - 使用托管 Java Bean 在重复控件中设置/获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com