私はこのコードを持っています:
<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 に関係していると思います。しかし、これを機能させる方法がわかりません。
アドバイスをいただければ幸いです。ありがとう!!
--UPDATE-- 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;
}