Skip to content

ifRender 动态渲染 1.11.1+

@View@Edit 均支持 ifRender 属性,通过 @ExprBool 表达式在运行时动态决定列或表单组件是否渲染,如:根据当前登录用户的角色控制字段可见性。

动态列

@View 中配置 ifRender,动态控制表格列是否展示:

java
@Erupt(name = "动态列")
@Table(name = "t_test")
@Entity
public class Simple extends BaseModel {

    @EruptField(
        views = @View(
            title = "动态列",
            ifRender = @ExprBool(exprHandler = DynamicView.class)
        )
    )
    private String dynamic;

}
java
import xyz.erupt.annotation.expr.ExprBool;

@Component
public class DynamicView implements ExprBool.ExprHandler {

    @Override
    public boolean handler(boolean expr, String[] params) {
        // TODO 动态控制逻辑,如:根据当前登录用户判断是否展示
        return false;
    }
    
}

动态表单

@Edit 中配置 ifRender,动态控制表单组件是否渲染:

java
@Erupt(name = "动态表单")
@Table(name = "t_test")
@Entity
public class Simple extends BaseModel {

    @EruptField(
            edit = @Edit(
                    title = "动态表单",
                    ifRender = @ExprBool(exprHandler = DynamicEdit.class)
            )
    )
    private String dynamic;

}
java
import xyz.erupt.annotation.expr.ExprBool;

@Component
public class DynamicEdit implements ExprBool.ExprHandler {

    @Override
    public boolean handler(boolean expr, String[] params) {
        // TODO 动态控制逻辑,如:根据当前登录用户判断是否展示
        return false;
    }
    
}

相关能力

贡献者

The avatar of contributor named as YuePeng YuePeng
The avatar of contributor named as Claude Opus 5 (1M context) Claude Opus 5 (1M context)

页面历史

Released under the Apache-2.0 License.