在视图中获取后端上下文数据
在视图中获取后端上下文数据
在视图中,有时候想直接使用后端的请求上下文数据,例如在当前页面展示当前登陆用户。
实现方式
-
后端可以通过实现
io.terminus.trantor.api.ContextHandler并注册为 SpringBean 来添加自定义的上下文数据。默认的上下文数据中,目前透出到 DSL 的只有当前用户。 -
在
View标签中通过contextFrom="moduleKey"指定用于获取上下文的模块(如果是获取当前登陆用户,则所有模块都一样)。 -
在 DSL 中使用
ctx.xxxx引用上下文中的值。
实现示例
示例1:自定义上下文
如:在视图中,获取当前项目id,则可使用
视图定义:
<View title="应用编辑" subtitle="" contextFrom="meta_store"> <Form model="meta_store_management_VersionedApplication" key="main"> <Fields> <Field name="projectId" :initValue="ctx.projectId"/> </Fields> </Form></View>后端代码定义:
@Componentpublic class TenantConditionHandler implements ContextHandler {
@Override public void handle(TContext context, ServletRequest request, ServletResponse response) { String projectId ="1"; TContext.set("projectId", projectId); }}示例2:获取当前用户
<!-- contextFrom 指定上下文来自哪个模块 --><View contextFrom="base"> <Detail model="base_User"> <Fields> <Field name="name" :initValue="ctx.__user.username"/> </Fields> </Detail></View>
其中 __user 为约定变量,指代当前登陆用户。可以进一步获取 id 、username 、avatar 等信息。