Skip to content

Data Filter @Filter

The @Filter annotation defines data display filter conditions, following HQL WHERE clause syntax.

Usage

java
@Erupt(
       name = "Test",
       filter = @Filter("EruptTest.name = '张三'"),
)
public class EruptTest extends BaseModel {
 
    @EruptField(
            views = @View(title = "Name"),
            edit = @Edit(title = "Name")
    )
    private String name;
    
}

Annotation Definition

java
public @interface Filter {
    
    String value() default ""; // filter condition expression

    String[] params() default {}; // callback parameters

    // dynamically control filter conditions
    Class<? extends FilterHandler> conditionHandler() default FilterHandler.class; 
}

Code Examples

Dynamic Filter Conditions

java
@Erupt(
       name = "Test",
       filter = @Filter(value = "name = '123' or name ",
                        params = {"23333"},
                        conditionHandler = AutoFilter.class)
)
public class EruptTest extends BaseModel {
 
    @EruptField(
            views = @View(title = "Name"),
            edit = @Edit(title = "Name")
    )
    private String name;
    
}
java
@Component
public class AutoFilter implements FilterHandler {
    
    /**
     * @param condition  filter condition expression
     * @param params     annotation parameters
     * 
     * Result: name = '123' or name = '23333'
     */
    @Override
    public String filter(String condition, String[] params) {
        // generate a new filter expression
        // return "name is null"
        
        // append query parameter
        return condition + " = '" + params[0] + "'";
    }
    
}

Notes

  • Filter conditions must follow HQL syntax.
  • Can be combined with the permission system to implement row-level access control.
  • Parameterized queries are supported for improved security.

Contributors

The avatar of contributor named as YuePeng YuePeng

Changelog

Released under the Apache-2.0 License.