6

我有这个代码:

<xe:formTable id="formTable1" formTitle="User Roles">
    <xe:formRow id="formRow1" label="Category Admin">
        <xe:djextNameTextBox id="edtCatAdmin" multipleSeparator="," value="#{exhibitorInfo.categoryAdmin}" />
        <xe:namePicker id="namePicker1" for="edtCatAdmin">
            <xe:this.dataProvider>
                <xe:namePickerAggregator>
                    <xe:this.dataProviders>
                        <xe:dominoNABNamePicker addressBookSel="first" groups="false" people="true" />
                        <xe:dominoViewNamePicker labelColumn="mailinName" viewName="lkp_MailIn" label="Group Mailboxes" />
                    </xe:this.dataProviders>
                </xe:namePickerAggregator>
            </xe:this.dataProvider>
        </xe:namePicker>
    </xe:formRow>
</xe:formTable>

目标是让一个多值名称选择器将它的值保存在 Java Bean 而不是文档字段中。因此,名称选择器指向 xe:djextNameTextBox 以便轻松删除名称,并且 xe:djextNameTextBox 绑定到我的 bean。

使用此 Java 代码 -

public void setCategoryAdmin(ArrayList<String> categoryAdmin) {
    System.out.println("Set CategoryAdmin - List");
    this.categoryAdmin = categoryAdmin;
}


public void setCategoryAdmin(String categoryAdmin) { 
    System.out.println("Set CategoryAdmin - String");
    if (!this.isBlankString(categoryAdmin)) {
        ArrayList<String> al = new ArrayList<String>();
        al.add(categoryAdmin);
        this.setCategoryAdmin(al);
    }
}

它似乎适用于 MULTIPLE 值。但是如果只使用一个值,我会得到一个错误:java.lang.IllegalArgumentException:参数类型不匹配

我认为这与 XPages 返回一个用于多个值的数组和一个用于单个值的字符串有关。但我不知道如何使这项工作。

任何意见,将不胜感激!谢谢!!

--更新-- Camac 链接到的博客文章中的这段代码似乎有效。

public Object getCategoryAdmin() {
    System.out.println("getCategoryAdmin");
    return this.categoryAdmin;
}


@SuppressWarnings("unchecked")
public void setCategoryAdmin( Object inputMulti ) {
      this.categoryAdmin = this.translateToVector( inputMulti );
    }

@SuppressWarnings("unchecked")
public Vector translateToVector( Object object ){
 if( object instanceof String ){
  Vector list = new Vector();
  list.add( object );
  return list;
 }

 if( object instanceof List ){
  return (Vector)object;
 }

 return null;
}
4

1 回答 1

7

我记得有同样的问题并使用此链接中的提示有所帮助: http ://dontpanic82.blogspot.com.au/2012/06/multi-value-fields-and-beans-in-xpages.html

也许尝试让公共 getter 和 setter 使用 java.lang.Object,而不是使用 2 个不同的?

于 2013-10-19T02:09:15.157 回答