【问题标题】:Loading style sheet(xhtml file), dynamically动态加载样式表(xhtml 文件)
【发布时间】:2011-05-26 10:27:09
【问题描述】:

我正在尝试动态地重新加载样式表(用 xhtml 编写)。

描述场景:

用户可以使用多种语言访问该应用程序;第一次加载应用程序时,会加载默认文件 master-styles.xhtml,现在用户可以从某个控制屏幕修改用户想要查看屏幕的语言。现在,我想为该特定语言加载不同的样式表,废弃当前使用的样式表(master-styles.xhtml);

我正在为 UI 组件使用 JSF,richfaces:

<html>
     <head>

<sf:includeStyles />
  <ui:insert name="globalStyles">
      <ui:include src="/WEB-INF/flows/ui/core/resources/styles/master-styles.xhtml"/>
  </ui:insert>
</head>

有没有办法丢弃这个文件并加载另一个文件作为我的 CSS 的一部分;还是有其他方法可以解决这个问题?

谢谢。

【问题讨论】:

    标签: java spring jsf xhtml richfaces


    【解决方案1】:

    如果我正确理解您的问题,您需要动态加载现在的页面 /master-styles.xhtml

    您可以在bean中设置页面名称,然后使用此代码您可以动态加载所需的样式页面

    <ui:insert name="globalStyles">
          <ui:include src="/WEB-INF/flows/ui/core/resources/styles/#{ThemeBean.stylePage}.xhtml"/>
      </ui:insert>
    

    【讨论】:

    • 感谢您的回复,我尝试通过资源包访问它,但是ui:include标签似乎没有评估资源包的值,并导致404页面未找到异常
    • @Abdul 不是资源包 ThemeBean 是一个简单的会话范围 bean,包含用户选择的主题样式
    • 我正在开发一个基于 Spring 的框架,我还能使用它吗?
    • @Abdul 我指出的 bean 将是您的 jsf 会话范围 bean
    • 我怀疑它在 iclude 标记中替换运行时的值;我使用 ;但没有成功,它再次抛出一个页面未找到异常
    【解决方案2】:

    确实有另一种方法可以解决此类问题。 Richfaces 具有皮肤,允许您一次更改所有组件的外观。它还支持在运行时切换皮肤(例如,用户可以选择他/她自己的主题)。有关此功能的更多信息,请访问 Richfaces wiki,并在 5.11.7,在运行时更改皮肤部分

    中介绍了切换

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2011-02-23
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多