2016-10-19 2 views
2

Мне нужен элемент управления именами, который позволяет пользователям выбирать людей только из одной группы. Я хочу иметь некоторую возможность добавить некоторый параметр с именем группы.Xpages - Как добавить параметр в пользовательский beanNamePicker для xe: namePicker control

Я следующий namepicker

<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;} 
} 

Как я могу передать некоторые группы параметров моей фасоли из namePicker? Я знаю, что я могу использовать некоторые переменные области видимости, но хочу иметь возможность использовать более одного элемента управления выбора с моим провайдером с выбранными группами.

ответ

0

У меня было аналогичное требование. Я не мог найти способ добавить аргумент в сборщик имен, но я добавил значение «filter» в переменную viewcope - и только что проверил его в моем коде выбора имени в методе readEntries().

Так где у вас есть // Do something.... у меня есть этот код:

if (null != ClubAdminBean.getCurrentInstance().getLocationType()) { 
    locationType = ClubAdminBean.getCurrentInstance().getLocationType(); 
    System.out.println("locationType=" + locationType); 
} 

... и в моем ClubAdminBean я реализовал этот метод, чтобы получить боб:

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-компонент, но может также иметь только одно значение, хранящееся в viewcope var iable.

/John

+0

Хорошо, это хорошо работает, если у вас есть один выборщик имен, который использует пользовательское имяPickerBean. В моем случае я хочу иметь возможность использовать более одного элемента управления с моим провайдером на моей xpage с выбранными группами. –

+0

Хорошо, я не мог видеть это из вашего вопроса .... но я думаю, что это может сработать. Вам просто нужно установить viewcope var (или bean) для фокусировки соответствующей части вашей формы - так что выборщик имен может определить, какой из них вы вызвали. Не знаю, можете ли вы получить «текущий элемент» (т. Е. «Id»), но это может быть и еще один путь ... –

+0

Да, но для этого решения требуется добавить дополнительное событие, которое поместило ключевое значение в область. Ну, в конечном итоге с добавлением sigle значение сборщик, который вычисляет меня метки и значения. –

Смежные вопросы