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