Xpages-如何为xe:namePicker控件向自定义beanNamePicker添加参数

Xpages-如何为xe:namePicker控件向自定义beanNamePicker添加参数,xpages,lotus-domino,lotus,xpages-ssjs,xpages-extlib,Xpages,Lotus Domino,Lotus,Xpages Ssjs,Xpages Extlib,我需要一个名称控件,允许用户只从一个组中选择人。我想有一些可能性添加一些参数与组名 我有下面的名字选择器 <xe:namePicker id="namePicker1" for="myControlId" dialogTitle="Select person"> <xe:this.dataProvider> <xe:beanNamePicker dataBean="mybean.BeanPick

我需要一个名称控件,允许用户只从一个组中选择人。我想有一些可能性添加一些参数与组名

我有下面的名字选择器

<xe:namePicker id="namePicker1"
                for="myControlId" dialogTitle="Select person">
        <xe:this.dataProvider>
            <xe:beanNamePicker dataBean="mybean.BeanPickerGroupMembers" loaded="true">
                </xe:beanNamePicker>
    </xe:this.dataProvider>
</xe:namePicker>

我的豆子看起来像这样:

public class BeanPickerGroupMembers implements INamePickerData {

    public BeanPickerGroupMembers() {}

    @Override
    public IPickerResult readEntries(IPickerOptions options) {
        List<IPickerEntry> entries = new ArrayList<IPickerEntry>();

        //do something according to desired group name

        return new SimplePickerResult(entries, -1);     

    }   

    @Override
    public List<IPickerEntry> loadEntries(Object[] ids, String[] attributeNames) {return null;}

    @Override
    public String[] getSourceLabels() {return null;}

    @Override
    public boolean hasCapability(int capability) {return false;}
}
公共类BeanPickerGroupMembers实现INamePickerData{
公共BeanPickerGroupMembers(){}
@凌驾
公共IPickerResult读取条目(IPickerOptions选项){
列表项=新的ArrayList();
//根据所需的组名执行某些操作
返回新的SimplePickerResult(条目,-1);
}   
@凌驾
公共列表加载项(对象[]ID,字符串[]属性名){return null;}
@凌驾
公共字符串[]getSourceLabels(){return null;}
@凌驾
公共布尔hasCapability(int capability){return false;}
}

如何从namePicker向我的bean传递一些组参数?我知道我可能会使用一些范围变量,但我希望能够对选择了不同组的提供程序使用多个选择器控件。

我也有类似的要求。我找不到向名称选取器添加参数的方法,但我向viewscope变量添加了“筛选值”,并在
readEntries()
方法中的名称选取器代码中进行了检查

所以你有
//做点什么….
我有以下代码:

if (null != ClubAdminBean.getCurrentInstance().getLocationType()) {
    locationType = ClubAdminBean.getCurrentInstance().getLocationType(); 
    System.out.println("locationType=" + locationType);
}
。。。在我的
ClubAdminBean
中,我实现了这个方法来获取bean:

public static ClubAdminBean getCurrentInstance() {
    // This is a neat way to get a handle on the instance of this bean in the application scope from other Java code...
    FacesContext context = FacesContext.getCurrentInstance();
    ClubAdminBean bean = (ClubAdminBean) context.getApplication().getVariableResolver().resolveVariable(context, "ClubAdmin");
    return bean;
}
为了便于检索,我倾向于在所有bean中实现它:-)

显然,您不需要bean,但也可以在viewscope变量中存储一个值


/John

如果您有一个使用自定义名称选择器bean的单一名称选择器,那就很好了。在我的例子中,我希望能够在我的xpage上使用超过1个选择器控件,并选择不同的组。好的,我从你的问题中看不到这一点。。。。但我认为这是可行的。您只需要将viewscope变量(或bean)设置为关注表单的相关部分,这样名称选择器就可以检测您调用了其中的哪一个。不知道是否可以获取“当前元素”(即“id”)——但这可能也是另一条路径……是的,但此解决方案需要添加额外的事件,将键值放入范围。最后,添加了一个单值选择器来计算我的标签和值。