跳转到内容

在视图中获取后端上下文数据

在视图中获取后端上下文数据

在视图中,有时候想直接使用后端的请求上下文数据,例如在当前页面展示当前登陆用户。

实现方式

  1. 后端可以通过实现 io.terminus.trantor.api.ContextHandler 并注册为 SpringBean 来添加自定义的上下文数据。默认的上下文数据中,目前透出到 DSL 的只有当前用户。

  2. 在  View  标签中通过  contextFrom="moduleKey"  指定用于获取上下文的模块(如果是获取当前登陆用户,则所有模块都一样)。

  3. 在 DSL 中使用  ctx.xxxx  引用上下文中的值。

实现示例

示例1:自定义上下文

如:在视图中,获取当前项目id,则可使用

视图定义:

<View version="2" title="应用编辑" subtitle="" contextFrom="meta_store">
<Form model="meta_store_management_VersionedApplication" key="main">
<Fields>
<Field name="projectId" initValue="#{ctx.projectId}"/>
</Fields>
</Form>
</View>

后端代码定义:

@Component
public class TenantConditionHandler implements ContextHandler {
@Override
public void handle(TContext context, ServletRequest request, ServletResponse response) {
String projectId ="1";
TContext.set("projectId", projectId);
}
}

示例2:获取当前用户

<!-- contextFrom 指定上下文来自哪个模块 -->
<View version="2" contextFrom="base">
<Detail model="base_User">
<Fields>
<Field name="name" initValue="#{ctx.__user.username}"/>
</Fields>
</Detail>
</View>


其中 __user  为约定变量,指代当前登陆用户。可以进一步获取 id 、username 、avatar 等信息。

注意:当前例子为0.17.x 版本