ADF Skin切换 -- 替换css路径方式实现皮肤切换

在一般的ADF样式切换方法中,都是需要刷新页面方能实现,这种情况下,总会出现各种问题(特别是在使用一些第三放js控件的时候)。为了解决这个问题,于是想到了采用直接替换 link 标签中的 css 路径的方式实现。

    观察到ADF 的样式路径 如下:

      /contextPath/adf/styles/cache/green-desktop-q78b4x-zh-ltr-safari-cmp.css

     红色部分是 ADF 框架自动生成的 css 文件名, 于是主要的问题就在于如何获取当前 skin 对应的 css 文件的路径。

     观察路这些 css 文件命名,可以猜测不同的浏览器 生成的 css 文件也不一样。在测试中发现这些 css 文件,只有在被需要的时候,才会生成。


     一番无聊的尝试后,终于实现了。

     1).切换皮肤地方,去掉刷新页面的操作,只改变 skinFamily,这个动作触发了 css 文件的生成。

     2).在页面添加 beforePhase 方法拿到 css 文件名

         
          

        RenderingContext context = RenderingContext.getCurrentInstance();
        if (phaseEvent.getPhaseId() == PhaseId.RENDER_RESPONSE && context != null) {
            CoreRenderingContext carc = (CoreRenderingContext)context;
            StyleContext styleContext = carc.getStyleContext();
            StyleProvider styleProvider = styleContext.getStyleProvider();

            List<String> uris = styleProvider.getStyleSheetURIs(styleContext);
            if (CollectionUtils.isEmpty(uris)) {
                return;
            }
            <span style="color:#ff0000;">String uri = uris.get(0);</span>// 获取得到的 css 文件名称
         // js 替换 css 路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值