Skip to content

JDL增强

BegCode在JHipster的基础上,对JDL的注解进行了增强,主要体现在以下几个方面。

4. relationship增加的注解功能

relationship支持注解,但好像不支持多个,同时如果有注释,要注意顺序,一定是注解在上,注释在下。目前看官方解析器好像还是这样的,没有调整。 注解分别作用在from和to两边。

示例如下:

md
/\*_ 权限与角色对应关系 _/
relationship ManyToMany {

    @annotationOnSource(importData-editInList-editBySelectDrawer-unidirectional)
    /** 菜单列表 */
    Authority{viewPermissions(text)}
    to
    @annotationOnDestination(editInList-editBySelectDrawer)
    /** 角色列表 */
    ViewPermission{authorities(name)}

    @annotationOnSource(editInList-editBySelectDrawer)
    /** Api权限列表 */
    Authority{apiPermissions(name)}
    to
    @annotationOnDestination(editInList-editBySelectDrawer)
    /** 角色列表 */
    ApiPermission{authorities(name)}

    @annotationOnSource(importData)
    /** 角色列表 */
    User{authorities(name)}
    to
    @annotationOnDestination(editInList-editByTableModal)
    /** 用户列表 */
    Authority{users(firstName)}

}

4.1 @annotationOnSource注解

该注解写在关系的左侧。其中的配置关键字由-进行分隔。支持的关键字有:

md
unidirectional: 单向关系
editBySelect: 使用Select组件
editByFormList: 使用FormList组件
editByList: 使用List组件
editByDescList: 使用DescList组件
editByTable: 使用Table进行编辑
countByPrimaryKey: 使用主键统计
relateByIdEntity: 使用Entity名称与Id主键进行关联
editBySelectModal: 使用弹窗进行编辑
editBySelectDrawer: 使用抽屉进行编辑
editByTableModal: 使用弹窗Table列表进行编辑
editByTableDrawer: 使用抽屉进行编辑
importData: 默认导入关联数据
editInForm: 在form中编辑
editInList: 在list中编辑
hideInList: 在list中不显示

简要说明如下:

unidirectional表示单向关系,只有左侧维护。

editByXXX表示使用什么组件进行编辑。

editInList表示可以在列表中直接维护关联关系数据。

上述示例的最终效果如下:

authority-list.png

4.2 @annotationOnDestination注解

该注解写在关系的右侧,一般情况下较少使用,主要用来通过右侧查询或维护关联关系。其中的配置关键字由-进行分隔。

支持的关键字有:editInList-editBySelectModal,后续根据实际情况可能进行调整。

在4.1示例中,第3个关系下,可以通过角色列表页面将某一角色授权给指定的用户。