Добрый день.
Я пока еще новичок cuba.
Не подскажете, как можно сделать фильтр с возможностью выбирать несколько значений?
Здравствуйте!
В документации CUBA есть раздел с подробным описанием данного компонента. Также можно изучить CUBA Sampler с различными примерами использования фильтра.
Если после изучения документации и демо-стенда у вас по-прежнему останутся вопросы, будем рады помочь.
С уважением,
Надежда.
Добрый день.
Для множественного выбора использовала TokenList.
Как можно дальше передать выбранные данные в запрос?
К примеру:
@Inject
private TokenList nameList;
@Inject
private Collection selectedOrgs;
selectedOrgs = nameList.getValue();
for (HlpAllDicts org : selectedOrgs) {
nameList2 = org.getName();
}
так вытаскиваю данные. Далее как передать данные в запрос? так как параметр nameList2 будет передавать только последние выбранные данные. Хотелось бы чтобы передавал все выбранные данные. В запросе использую “IN”. Если передать collection, а не string то падает в ошибку.
Выходит такая ошибка, если использовать :param$.
IllegalArgumentException: You have attempted to set a value of type class java.util.Collections$SingletonMap for parameter param$nameList2 with expected type of class java.lang.String from query string select e from
Насколько я поняла, вы хотите передать в JPQL-запрос несколько значений. Этот вопрос уже обсуждался в данной теме.
Небольшой пример, как в запрос в параметр :param передается List.
дескриптор:
<loader id="partsDl">
<query>
<![CDATA[select e from frm_Part e where e.name in :param]]>
</query>
</loader>
Контроллер:
@Inject
private CollectionLoader<Part> partsDl;
@Subscribe
public void onAfterShow(AfterShowEvent event) {
String[] arr = new String[]{"name1", "name2"};
List<String> arr1 = Arrays.asList(arr);
partsDl.setParameter("param",arr1);
partsDl.load();
}
В вашем случае вы можете создать новый List<String> names
, в него добавить значения из
for (HlpAllDicts org : selectedOrgs) {
nameList2 = org.getName();
}
и его передать в запрос.
С уважением,
Надежда.
Спасибо) Заработала.