Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在OpenXava中以列表模式筛选标记(/字符串的一部分)? 我想在列表模式下在OpenXava中过滤标记。_Java_Tags_Openxava - Fatal编程技术网

Java 如何在OpenXava中以列表模式筛选标记(/字符串的一部分)? 我想在列表模式下在OpenXava中过滤标记。

Java 如何在OpenXava中以列表模式筛选标记(/字符串的一部分)? 我想在列表模式下在OpenXava中过滤标记。,java,tags,openxava,Java,Tags,Openxava,因此,我有一个名为标记的简单实体(带有int-id、字符串名称和字符串描述) 我有一个嵌入式实体详细信息,它保存标记引用,如下所示: 我的“main”实体称为Target,它表示一个对象,应该能够用标签标记 因此,我们有一个详细信息集合,将标记分配给目标,而目标不能以列表模式表示 @Tab(name="TargetTab", editors="List", properties="id, tags, manufacturer.name, ow

因此,我有一个名为标记的简单实体(带有
int-id、字符串名称和字符串描述

  • 我有一个嵌入式实体详细信息,它保存标记引用,如下所示:

  • 我的“main”实体称为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);
        }
    
    ...
    
    
    这将在列表模式下创建一个cloumn“Tags”,它由一个字符串表示,如:“a,b,c,d”

    对于列表模式下的过滤,OpenXava默认有一个输入框,您可以在其中键入类似“a,b”的字符串,以获取标记为“a”和“b”的所有条目

    但如果我输入“a,c”,则不会显示任何结果,即使有标记为“a,b,c,d”的条目

    我的目标/问题:

    我想要一个灵活的过滤器,在其中我可以键入类似“a,c”的内容并获取所有包含标记“a”和“c”的条目


    我尝试通过目标实体中带有
    “baseCondition=“${tags}=?”
    “TagFilter.class”
    来实现它,但没有可用的结果

    目标中的tags属性与细节集合的tag值没有关系。目标中的tags属性只是表中的一个新列

    您必须选择以下选项:

  • 使用@Formula定义标记属性
  • 每次添加/删除详细信息时更新tags属性(可以使用JPA回调方法)

  • 谢谢,我尝试了你的解决方案,但我的问题不是,如何用值填充属性。实际上,我想在标记字符串的列表模式下编辑搜索筛选器的行为。目前我只能筛选整个/连接的字符串。如果标记是字符串,则属性应该能够按“包含”进行筛选,这确实是默认的比较或者。要自定义过滤参数,有一个名为IFilter的interfaz和一个名为filter的@Tab属性。
    @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;
    
    ...