保存CheckboxGroup值XPages

保存CheckboxGroup值XPages,xpages,Xpages,我正在开发我的第一个Notes/XPages/Java应用程序,我被困在一些基本的“crud”级别。下面是托管bean的一部分。我可以将数据加载到XPage,但保存复选框字段会给我带来问题,即无法保存。我假设这与数据类型有关,因为CheckboxGroup是多值的 表单字段包括: 类别 就业角色 变数 public class TrainingModule implements Serializable { private String Category; private Object Empl

我正在开发我的第一个Notes/XPages/Java应用程序,我被困在一些基本的“crud”级别。下面是托管bean的一部分。我可以将数据加载到XPage,但保存复选框字段会给我带来问题,即无法保存。我假设这与数据类型有关,因为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


我知道也有类似的帖子,但我似乎无法将它们与我试图实现的目标联系起来

我的下一个任务将是在Java中使用上载和下载控件,因此任何需要避免的提示或陷阱都将非常有用。
任何帮助都将不胜感激

由于需要加载/保存数据,因此最好使用对象数据源。无论如何,试试这个:

public Object[] getEmploymentRole() {
return EmploymentRole;}

public void setEmploymentRole(final Object[] employmentRole) {
EmploymentRole = employmentRole;}
无法将数组强制转换为对象,复选框组尝试获取/设置数组

这将导致您的保存方法发生轻微变化:

    doc.replaceItemValue("Category", Category);
    Vector v = new Vector(Arrays.asList(EmploymentRole));
    doc.replaceItemValue("EmploymentRole", v);

让我们了解进展情况

将您的雇佣角色定义为类型为
ArrayList的字段

private List employmentRoles=new ArrayList();
public void setEmploymentRoles(列出employmentRoles){
this.employmentRoles=employmentRoles;
}
公共列表getEmploymentRoles(){
返回就业岗位;
}
使用以下命令读取值:

setEmploymentRoles(doc.getItemValue(“EmploymentRole”);
并使用

doc.replaceItemValue(“EmploymentRole”,新向量(getEmploymentRoles());

顺便说一句,字段名不应该以大写字母开头。在这里查找。

我想您是有意在save方法中省略了设置doc对象的行吗?如果不是,那么你也应该实例化你的doc对象,因为它现在被设置为null,这样代码就不会被执行,而是落入catch块中。@OliverBusse是的,对不起Oliver,我试图不放太多的代码-一个错误。doc=ExtLibUtil.getCurrentDatabase().getDocumentByUNID(getUnid());嗨,我得到一个向量警告-向量是原始类型。对泛型类型向量的引用应参数化。但更重要的是,这破坏了我的负载-类型培训模块中的方法setEmploymentRole(Object[])不适用于参数(Vector)标记,当然它会阻止负载。根据更改的保存方法,您认为负载也需要调整。Notes Java api使用原始向量,因此忽略警告或使用注释的推荐Hi yes抱歉,我对Java不熟悉,所以这对我来说是一个小步骤,我确实尝试过解决它,但无法实现。非常感谢。在您的加载中,您需要这个.EmploymentRole=doc.getItemValue(“EmploymentRole”).toArray();您还希望使用小写字母来启动变量。仅对类名使用大写是一种习惯。camelCase很常见,下划线较少,非常出色,所有这些片段都帮助我提高了学习效率。我会整理我的案子。我将尝试与上面相同的方法,但使用文件上载和下载控件,我想这不会那么简单,在我开始之前,您是否知道任何提示或指针。Brilliant Knut它可以工作,非常感谢您的帮助。感谢关于字段名的提示,在我更好地了解它们都是用大写字母完成之前,我正在将旧应用程序转移到Java/Xpages。我可以问一下如何重置它们,或者用初始值填充它们吗?@user1699830您需要定义一个ArrayList列表,添加值并调用setEmploymentRoles()使用您创建的列表:
list list=new ArrayList();列表。添加(“第一个值”);列表。添加(“第二个值”);setEmploymentRoles(列表)
    doc.replaceItemValue("Category", Category);
    Vector v = new Vector(Arrays.asList(EmploymentRole));
    doc.replaceItemValue("EmploymentRole", v);