我正在开发我的第一个Notes / XPages / Java应用程序,并且我陷入了一些基本的'crud'级别。以下是托管bean的一部分。我可以将数据加载到XPage,但保存Checkbox字段会导致我出现问题,即它不会保存。我假设它与数据类型有关,因为CheckboxGroup是多值的。
表单字段是: 类别 就业角色
变量
public class TrainingModule implements Serializable {
private String Category;
private Object EmploymentRole;
public String getCategory() {
return Category; }
public void setCategory(final String category) {
Category = category;}
public Object getEmploymentRole() {
return EmploymentRole;}
public void setEmploymentRole(final Object employmentRole) {
EmploymentRole = employmentRole;}
加载方法
public void load(final String unid) {
setUnid(unid);
Document doc = null;
try {
doc = ExtLibUtil.getCurrentDatabase().getDocumentByUNID(getUnid());
setCategory(doc.getItemValueString("Category"));
setEmploymentRole(doc.getItemValue("EmploymentRole"));
etc
保存方法
public boolean saveData() {
boolean result = false;
Document doc = null;
try {
doc.replaceItemValue("Category", Category);
doc.replaceItemValue("EmploymentRole", EmploymentRole);
result = doc.save()
etc
的XPage
<xp:checkBoxGroup id="checkBoxGroup1"
value="#{TrainingModule.employmentRole}">
<xp:selectItem itemLabel="Admin" itemValue="Admin">
</xp:selectItem>
<xp:selectItem itemLabel="Installation" itemValue="Installation">
</xp:selectItem>
<xp:selectItem itemLabel="Proj Man" itemValue="Proj Man">
</xp:selectItem>
</xp:checkBoxGroup>
我知道有类似的贴子,但我似乎无法将它们与我想要达到的目标联系起来。
我的下一个任务是使用Java上传和下载控件,以避免任何提示或陷阱。 任何帮助,将不胜感激。
答案 0 :(得分:2)
将您的就业角色定义为ArrayList<String>
类型的字段:
private List<String> employmentRoles = new ArrayList<String>();
public void setEmploymentRoles(List<String> employmentRoles) {
this.employmentRoles = employmentRoles;
}
public List<String> getEmploymentRoles() {
return employmentRoles;
}
使用
读取值setEmploymentRoles(doc.getItemValue("EmploymentRole"));
并使用
保存值doc.replaceItemValue("EmploymentRole", new Vector(getEmploymentRoles()));
是的,你不应该用大写字母开始一个字段名称。在这里查看Java naming conventions。
答案 1 :(得分:0)
由于您需要加载/保存数据,因此使用对象数据源可能会更好。无论如何试试这个:
public Object[] getEmploymentRole() {
return EmploymentRole;}
public void setEmploymentRole(final Object[] employmentRole) {
EmploymentRole = employmentRole;}
无法将数组强制转换为Object,而checkboxgroup则尝试获取/设置数组。
这会导致您的保存方法略有变化:
doc.replaceItemValue("Category", Category);
Vector v = new Vector(Arrays.asList(EmploymentRole));
doc.replaceItemValue("EmploymentRole", v);
让我们知道它是怎么回事