给RichFaces设置一个皮肤很简单,只要在web.xml文件中写以下这一段就可以了:
- <context-param>
- <param-name>org.richfaces.SKIN</param-name>
- <param-value>ruby</param-value>
- </context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>ruby</param-value>
</context-param>
但是,有时候你也许会要在程序运行的时候去动态改变RichFaces的皮肤。甚至你可能会想让每个用户保存自己喜欢的皮肤。那该怎么做呢?
首先,我们需要将硬编码到web.xml中的皮肤设置改变为一个EL表达式:
- <context-param>
- <param-name>org.richfaces.SKIN</param-name>
- <param-value>#{skinBean.skin}</param-value>
- </context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>#{skinBean.skin}</param-value>
</context-param>
skinBean是一个JSF managed Bean,类似这样:
- public class SkinBean {
-
- private String skin;
-
- public String getSkin() {
- return skin;
- }
- public void setSkin(String skin) {
- this.skin = skin;
- }
- }
public class SkinBean {
private String skin;
public String getSkin() {
return skin;
}
public void setSkin(String skin) {
this.skin = skin;
}
}
当然,你需要在JSF的配置文件里面注册一下这个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>
<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中,那么每次请求到达的时候,都会去刷新并将皮肤恢复成默认的,而我们希望看到的效果是,用户每次登录的整个过程,皮肤是一直不变的(除非用户主动去改变它)。
通过下面的页面,我们立刻就能看到效果了。
- <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>
<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:
- <context-param>
- <param-name>org.richfaces.CONTROL_SKINNING</param-name>
- <param-value>enable</param-value>
- </context-param>
分享到:
相关推荐
- **内置皮肤支持:** 介绍RichFaces自带的一些皮肤风格及其特点。 - **运行时更改皮肤:** 讲解了如何在应用程序运行期间动态切换皮肤。 - **标准控件皮肤化:** 展示了如何为RichFaces的标准控件应用皮肤。 - ...
- **内置的可定制化皮肤**:介绍框架自带的几种标准皮肤风格。 - **运行时更改皮肤**:探讨在应用运行过程中更改皮肤的方法。 - **标准控件的皮肤化**:对标准控件进行皮肤化处理的技术细节。 - **客户端脚本以...
总的来说,RichFaces为开发者提供了一个强大的工具集,用于构建具有丰富交互性和动态性的JSF应用,大大简化了开发过程,提高了开发效率,同时也增强了用户体验。通过其内置的Ajax支持、组件库、资源管理和皮肤机制,...
**RichFaces中文开发文档概述** RichFaces是一款基于JavaServer Faces(JSF)技术的开源UI组件库,由JBoss组织开发。它为JSF应用程序提供了丰富的用户体验和强大的交互功能。这款框架极大地简化了Web开发过程,尤其...
- **皮肤定制**:修改 CSS 样式文件,调整组件外观。 ### 总结 "richfaces参考文档"是学习和掌握 RichFaces 的宝贵资料,它覆盖了从基础概念到高级特性的全方位内容。通过深入阅读并实践其中的示例,开发者能够...
在RichFaces中,这个库可能用于解析和应用组件的样式,或者进行动态样式修改,以实现更灵活的界面定制。 5. **richfaces-core-api-4.0.0.Final.jar**:这是RichFaces核心API的库,定义了与RichFaces框架交互的接口...
4. **皮肤和主题:** RichFaces 允许自定义皮肤和主题,以满足不同应用的视觉需求。 5. **生命周期管理:** JSF 有自己的一套生命周期,包括初始化、应用请求值、处理验证、应用业务逻辑和渲染响应。RichFaces 集成...
**Richfaces ShowCase离线包** 是一个专为开发者设计的资源包,它包含了Richfaces框架的演示示例,能够帮助用户在没有网络连接的情况下也能深入理解和学习Richfaces的功能和用法。这个离线包特别适合那些需要在本地...
在本文中,我们将重点介绍几个常用的Richfaces标签,并通过实例进行讲解。 #### 二、Richfaces标签介绍 ##### 1. `rich:componentControl`标签 `rich:componentControl`标签用于控制其他组件的行为,例如显示或...
- **支持的浏览器**:为了确保广泛的用户支持,RichFaces通常会支持最新及前几代的主流浏览器,如Chrome、Firefox、Safari和Internet Explorer。 **3. RichFaces入门** - **下载RichFaces 3.2.0**:开始使用...
总的来说,RichFaces UI 3.2.1是JBoss平台上的一款强大工具,它提供了丰富的AJAX组件和强大的交互性功能,使得开发人员能够创建出高效、动态的Web应用。结合其与JSF的紧密集成,以及在JBoss环境下的优化,使得...
RichFaces 4.5 是一个强大的JavaServer Faces (JSF) 框架的扩展库,专为构建富互联网应用程序(Rich Internet Applications, RIA)而设计。这个库提供了丰富的组件集,以及对JavaScript(JS)和Java API的支持,使得...
总的来说,RichFaces 提供了一系列高级组件,如 `rich:componentControl` 和 `rich:modalPanel`,它们极大地增强了JSF的应用开发能力,使开发者能够构建更加动态、交互性强的Web应用。通过熟练掌握这些标签和组件,...
3. **皮肤和主题**:RichFaces 3.0.0提供了多种预定义的皮肤和主题,可以根据项目需求快速定制UI样式,确保应用与企业品牌一致。 4. **事件处理**: RichFaces支持自定义服务器端和客户端事件,使得开发者可以灵活...
关于richfaces的一些比较好的资料,希望大家看了能有收获
- **Skinning and Theming**:RichFaces允许自定义皮肤和主题,这在创建符合企业风格的UI时非常有用。 4. Demo源码分析 - **Examples**:此目录下的每个子目录都是一个单独的示例,展示了如何使用特定的RichFaces...