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”)——但这可能也是另一条路径……是的,但此解决方案需要添加额外的事件,将键值放入范围。最后,添加了一个单值选择器来计算我的标签和值。