`

动态改变RichFaces自带的几种皮肤

阅读更多

RichFaces设置一个皮肤很简单,只要在web.xml文件中写以下这一段就可以了:

 

Xml代码 复制代码
  1. <context-param>  
  2.   <param-name>org.richfaces.SKIN</param-name>  
  3.   <param-value>ruby</param-value>  
  4. </context-param>  
<context-param>
  <param-name>org.richfaces.SKIN</param-name>
  <param-value>ruby</param-value>
</context-param>

 

但是,有时候你也许会要在程序运行的时候去动态改变RichFaces的皮肤。甚至你可能会想让每个用户保存自己喜欢的皮肤。那该怎么做呢?

 

首先,我们需要将硬编码到web.xml中的皮肤设置改变为一个EL表达式:

Xml代码 复制代码
  1. <context-param>  
  2.   <param-name>org.richfaces.SKIN</param-name>  
  3.   <param-value>#{skinBean.skin}</param-value>  
  4. </context-param>  
<context-param>
  <param-name>org.richfaces.SKIN</param-name>
  <param-value>#{skinBean.skin}</param-value>
</context-param>

 

skinBean是一个JSF managed Bean,类似这样:

Java代码 复制代码
  1. public class SkinBean {   
  2.     
  3.    private String skin;   
  4.     
  5.    public String getSkin() {   
  6.     return skin;   
  7.    }   
  8.    public void setSkin(String skin) {   
  9.     this.skin = skin;   
  10.    }   
  11. }  
public class SkinBean {
 
   private String skin;
 
   public String getSkin() {
	return skin;
   }
   public void setSkin(String skin) {
	this.skin = skin;
   }
}

 

当然,你需要在JSF的配置文件里面注册一下这个Bean:

Xml代码 复制代码
  1. <managed-bean>  
  2.   <managed-bean-name>skinBean</managed-bean-name>  
  3.   <managed-bean-class>demo.SkinBean</managed-bean-class>  
  4.   <managed-bean-scope>session</managed-bean-scope>  
  5.   <managed-property>  
  6.    <property-name>skin</property-name>  
  7.    <value>ruby</value>  
  8.   </managed-property>  
  9. </managed-bean>  
<managed-bean>
  <managed-bean-name>skinBean</managed-bean-name>
  <managed-bean-class>demo.SkinBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>skin</property-name>
   <value>ruby</value>
  </managed-property>
</managed-bean>

 

我们会想要设置一个默认的皮肤,同时我们需要将这个Bean的声明周期为Session。之所以不放到request中,是因为如果放到request中,那么每次请求到达的时候,都会去刷新并将皮肤恢复成默认的,而我们希望看到的效果是,用户每次登录的整个过程,皮肤是一直不变的(除非用户主动去改变它)。

 

通过下面的页面,我们立刻就能看到效果了。

Xml代码 复制代码
  1. <h:form>  
  2.    <rich:panel header="I can change skins" style="width: 300px">  
  3.     <h:panelGrid columns="2">  
  4.        <h:selectOneListbox id="select" value="#{skinBean.skin}" onchange="submit()">  
  5.         <f:selectItem itemLabel="plain" itemValue="plain" />  
  6.         <f:selectItem itemLabel="emeraldTown" itemValue="emeraldTown" />  
  7.         <f:selectItem itemLabel="blueSky" itemValue="blueSky" />  
  8.         <f:selectItem itemLabel="wine" itemValue="wine" />  
  9.         <f:selectItem itemLabel="japanCherry" itemValue="japanCherry" />  
  10.         <f:selectItem itemLabel="ruby" itemValue="ruby" />  
  11.         <f:selectItem itemLabel="classic" itemValue="classic" />  
  12.         <f:selectItem itemLabel="laguna" itemValue="laguna" />  
  13.         <f:selectItem itemLabel="deepMarine" itemValue="deepMarine" />  
  14.        </h:selectOneListbox>  
  15.            <rich:tabPanel>  
  16.         <rich:tab label="Tab 1">Tabs also change color</rich:tab>  
  17.         <rich:tab label="Tab 2">...</rich:tab>  
  18.        </rich:tabPanel>  
  19.         </h:panelGrid>  
  20.    </rich:panel>  
  21. </h:form>  
<h:form>
   <rich:panel header="I can change skins" style="width: 300px">
	<h:panelGrid columns="2">
	   <h:selectOneListbox id="select" value="#{skinBean.skin}" onchange="submit()">
		<f:selectItem itemLabel="plain" itemValue="plain" />
		<f:selectItem itemLabel="emeraldTown" itemValue="emeraldTown" />
		<f:selectItem itemLabel="blueSky" itemValue="blueSky" />
		<f:selectItem itemLabel="wine" itemValue="wine" />
		<f:selectItem itemLabel="japanCherry" itemValue="japanCherry" />
		<f:selectItem itemLabel="ruby" itemValue="ruby" />
		<f:selectItem itemLabel="classic" itemValue="classic" />
		<f:selectItem itemLabel="laguna" itemValue="laguna" />
		<f:selectItem itemLabel="deepMarine" itemValue="deepMarine" />
	   </h:selectOneListbox>
           <rich:tabPanel>
		<rich:tab label="Tab 1">Tabs also change color</rich:tab>
		<rich:tab label="Tab 2">...</rich:tab>
	   </rich:tabPanel>
        </h:panelGrid>
   </rich:panel>
</h:form>

 

这里放一个tab组件,其实是为了让你看到外观上的改变效果的,没有功能上的实际作用。你还可以放几个其他组件上去,看看效果的变化。

 

如果你想要学习如何编写自己的皮肤,请参考这篇文章XXX(稍后放出:)

 

其他你可以尝试一下的,就是改变一下标准组件的样式,我们的例子中为h:selectOneListbox:

Xml代码 复制代码
  1. <context-param>  
  2.    <param-name>org.richfaces.CONTROL_SKINNING</param-name>  
  3.    <param-value>enable</param-value>  
  4. </context-param>  
分享到:
评论

相关推荐

    RichFaces 3.3 帮助文档(英文)

    - **内置皮肤支持:** 介绍RichFaces自带的一些皮肤风格及其特点。 - **运行时更改皮肤:** 讲解了如何在应用程序运行期间动态切换皮肤。 - **标准控件皮肤化:** 展示了如何为RichFaces的标准控件应用皮肤。 - ...

    richfaces3.2用户手册的pdf版

    - **内置的可定制化皮肤**:介绍框架自带的几种标准皮肤风格。 - **运行时更改皮肤**:探讨在应用运行过程中更改皮肤的方法。 - **标准控件的皮肤化**:对标准控件进行皮肤化处理的技术细节。 - **客户端脚本以...

    richfaces详细使用

    本文旨在深入探讨RichFaces的核心功能、组件开发流程以及资源管理和皮肤技术支持,帮助开发者掌握这一框架,以构建高效、美观的Web应用程序。 #### 一、RichFaces概述 RichFaces是面向JavaServer Faces(JSF)的...

    Richfaces组件使用指南

    总的来说,RichFaces为开发者提供了一个强大的工具集,用于构建具有丰富交互性和动态性的JSF应用,大大简化了开发过程,提高了开发效率,同时也增强了用户体验。通过其内置的Ajax支持、组件库、资源管理和皮肤机制,...

    richfaces中文开发文档

    **RichFaces中文开发文档概述** RichFaces是一款基于JavaServer Faces(JSF)技术的开源UI组件库,由JBoss组织开发。它为JSF应用程序提供了丰富的用户体验和强大的交互功能。这款框架极大地简化了Web开发过程,尤其...

    richfaces参考文档

    - **皮肤定制**:修改 CSS 样式文件,调整组件外观。 ### 总结 "richfaces参考文档"是学习和掌握 RichFaces 的宝贵资料,它覆盖了从基础概念到高级特性的全方位内容。通过深入阅读并实践其中的示例,开发者能够...

    RichFaces开发指南3.3.3

    - **动作监听器与值改变监听器**:RichFaces 不仅提供了对 JSF 生命周期的全面支持,还引入了动作监听器和值改变监听器,使得开发者能够在 Ajax 请求响应周期中处理更多的逻辑。 - **服务器端验证与转换**:...

    richfaces4.0所需jar包

    在RichFaces中,这个库可能用于解析和应用组件的样式,或者进行动态样式修改,以实现更灵活的界面定制。 5. **richfaces-core-api-4.0.0.Final.jar**:这是RichFaces核心API的库,定义了与RichFaces框架交互的接口...

    richfaces-3.0.0

    4. **皮肤和主题:** RichFaces 允许自定义皮肤和主题,以满足不同应用的视觉需求。 5. **生命周期管理:** JSF 有自己的一套生命周期,包括初始化、应用请求值、处理验证、应用业务逻辑和渲染响应。RichFaces 集成...

    Richfaces ShowCase离线包

    **Richfaces ShowCase离线包** 是一个专为开发者设计的资源包,它包含了Richfaces框架的演示示例,能够帮助用户在没有网络连接的情况下也能深入理解和学习Richfaces的功能和用法。这个离线包特别适合那些需要在本地...

    Richfaces标签

    在本文中,我们将重点介绍几个常用的Richfaces标签,并通过实例进行讲解。 #### 二、Richfaces标签介绍 ##### 1. `rich:componentControl`标签 `rich:componentControl`标签用于控制其他组件的行为,例如显示或...

    richfaces开发指南(英文版)

    - **支持的浏览器**:为了确保广泛的用户支持,RichFaces通常会支持最新及前几代的主流浏览器,如Chrome、Firefox、Safari和Internet Explorer。 **3. RichFaces入门** - **下载RichFaces 3.2.0**:开始使用...

    richfaces-ui-3.2.1

    总的来说,RichFaces UI 3.2.1是JBoss平台上的一款强大工具,它提供了丰富的AJAX组件和强大的交互性功能,使得开发人员能够创建出高效、动态的Web应用。结合其与JSF的紧密集成,以及在JBoss环境下的优化,使得...

    RichFaces4.5 JavaApi JSApi

    RichFaces 4.5 是一个强大的JavaServer Faces (JSF) 框架的扩展库,专为构建富互联网应用程序(Rich Internet Applications, RIA)而设计。这个库提供了丰富的组件集,以及对JavaScript(JS)和Java API的支持,使得...

    richfaces标签学习笔记

    总的来说,RichFaces 提供了一系列高级组件,如 `rich:componentControl` 和 `rich:modalPanel`,它们极大地增强了JSF的应用开发能力,使开发者能够构建更加动态、交互性强的Web应用。通过熟练掌握这些标签和组件,...

    jboss-richfaces-3.0.0

    3. **皮肤和主题**:RichFaces 3.0.0提供了多种预定义的皮肤和主题,可以根据项目需求快速定制UI样式,确保应用与企业品牌一致。 4. **事件处理**: RichFaces支持自定义服务器端和客户端事件,使得开发者可以灵活...

    richfaces中文学习教程

    关于richfaces的一些比较好的资料,希望大家看了能有收获

    richfaces3.3.1官方demo的源代码

    - **Skinning and Theming**:RichFaces允许自定义皮肤和主题,这在创建符合企业风格的UI时非常有用。 4. Demo源码分析 - **Examples**:此目录下的每个子目录都是一个单独的示例,展示了如何使用特定的RichFaces...

Global site tag (gtag.js) - Google Analytics