Я хочу выполнить фильтрацию по тегам в OpenXava, в режиме списка.
Поэтому у меня есть простая сущность с именем Tag (с int id, String name and String description
)
У меня есть встроенный объект Подробности , который содержит ссылки на теги и выглядит следующим образом:
@Embeddable
public class Detail {
@ManyToOne(fetch = FetchType.LAZY, optional = true)
private Tag tag;
public Tag getTag() {
return tag;
}
public void setTag(Tag tag) {
this.tag = tag;
}
@Override
public String toString() {
return tag.getName();
}
Мой «основной» объект, называемый
Target , представляет собой объект, который должен иметь возможность помечаться тегами.
Следовательно, есть коллекция деталей для назначения Теги для целей, которые не могут быть представлены в режиме списка
@Tab(name="TargetTab", editors="List", properties="id, tags, manufacturer.name, owner.name, protocolID, idCreationDate, simDBID, remark, changeDate, photo, xphoto")
@Entity
public class Target implements Serializable {
...
@ElemtentCollection
@ListProperties("tag.number, tag.name, tag.description")
@Embedded
Collection<Detail> details;
public Collection<Detail> getDetails() {
return details;
}
public void setDetails(Collection<Detail> details) {
this.details = details;
tags = details.toString().substring(1, details.toString().length() - 1);
}
...
Для представления тегов в режиме списка я создал строку, заполненную именем тега
...
@ReadOnly
String tags;
...
При этом создается список «Тегов» в режиме списка, который представлен в виде строки: «a, b, c, d»
Для фильтрации в режиме списка OpenXava имеет по умолчанию поле ввода, в котором вы можете ввести строку типа «a, b», чтобы получить все записи с тегами «a» и «b»
Но если я введу «a», c ", результаты не будут показаны, хотя есть записи с тегами" a, b, c, d "
Моя цель / проблема:
Мне нужен гибкий фильтр, в котором я могу напечатать что-то вроде: "a, c" и получить все записи, которые содержат теги "a" и "c"
, которые я пытался реализовать это "TagFilter.class"
ш ith "baseCondition="${tags} = ?"
в целевом объекте, без результата, который можно использовать