You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ZK框架下如何重定向至Cmis对应的收藏夹文件夹

ZK框架仪表盘收藏夹跳转实现方案

你之前填写的/favouriteQuery是CMIS的资源存储路径,不是WEB应用可直接访问的前端路由,因此直接配置到href属性无法正常跳转,可采用以下三种方案实现:

方案1:ZK服务端事件绑定(无刷新切换,推荐)

不用原生href跳转,改用ZK组件的服务端事件绑定,点击后直接在仪表盘内加载并渲染收藏内容,不需要独立URL:

  1. 修改前端ZK模板代码:
<div id="dashboardWidgetContent" class="favourites-container">
     <h:div class="favourites-link">
        <a onClick="@command('loadFavorites')" class="textlink">${c:l('drive.dashboard.favourites.link')}</a>
     </h:div>
</div>
  1. 对应ViewModel层添加事件处理方法:
@Command
@NotifyChange("favoritesList")
public void loadFavorites() {
    // 调用CMIS接口拉取/favouriteQuery路径下的当前用户收藏内容
    this.favoritesList = cmisService.getChildrenByPath("/favouriteQuery");
    // 可自行添加切换仪表盘展示区域的逻辑,隐藏其他组件只展示收藏列表
}

方案2:配置路由映射(支持直接访问收藏地址)

如果需要支持用户直接在地址栏输入/favouriteQuery访问收藏页,可在应用路由层配置转发规则,将该路径映射到仪表盘页面并携带展示收藏夹的参数:

  1. 在web.xml或者项目路由配置中添加规则:将/favouriteQuery请求转发到仪表盘页面,同时带上showFavorites=true参数
  2. 仪表盘页面初始化时读取参数,自动加载收藏内容:
@Init
public void init(@QueryParam("showFavorites") Boolean showFavorites) {
    if (Boolean.TRUE.equals(showFavorites)) {
        this.favoritesList = cmisService.getChildrenByPath("/favouriteQuery");
    }
}
  1. 原链接的href可直接保留/favouriteQuery,点击后会自动跳转到仪表盘并加载收藏内容。

方案3:纯前端事件拦截(适合前后端分离混合开发场景)

如果项目前端引入了JS框架,可直接拦截链接的点击事件,通过ZK客户端API触发内容加载,还可以修改浏览器地址栏状态实现伪路由:

document.querySelector('.favourites-link .textlink').addEventListener('click', (e) => {
    e.preventDefault();
    // 调用ZK客户端方法通知服务端加载收藏内容
    zk.Widget.$('$dashboardWidgetContent').fire('onLoadFavorites', {});
    // 可选:修改地址栏,支持刷新后保留状态
    history.pushState({view: 'favorites'}, '我的收藏', '/favouriteQuery');
})

内容的提问来源于stack exchange,提问作者GetsugaTensho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:06:08