RichFaces - Peau riche
RichFaces est livré avec une nouvelle fonctionnalité pour contrôler l'apparence et la convivialité de votre site Web de manière centralisée, appelée Rich Skin. Skin est une implémentation de haut niveau d'anciens fichiers CSS, ce qui est plus pratique pour le développeur back-end pour contrôler l'aspect et la convivialité du site Web. Il existe des skins intégrés disponibles, qui peuvent être personnalisés selon votre choix.
Peau intégrée
Il existe un certain nombre de skins intégrés disponibles dans le fichier jar du composant RichFaces. Voici quelques peaux riches intégrées disponibles.
- Default
- Plain
- emeraldTown
- blueSky
- wine
- japanCherry
- ruby
- classic
- deepMarine
- NULL
Dans l'exemple suivant, nous allons implémenter un skin «classique». Il est très facile de mettre en œuvre l'un des skins mentionnés ci-dessus. Avant de continuer, veuillez ajouter le skin dans le fichier «web.xml» en utilisant la ligne de code ci-dessous. Nous pouvons ajouter n'importe quel skin de notre choix dans la liste ci-dessus. Nous avons juste besoin de modifier la balise <param-value> avec le nom de skin approprié.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>classic</param-value>
</context-param>
Après avoir ajouté ceci, créez un fichier «SkinExample.xhtml» et ajoutez-y la ligne de code suivante.
<?xml version = '1.0' encoding = 'UTF-8' ?>
<ui:composition xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core"
xmlns:ui = "http://java.sun.com/jsf/facelets"
xmlns:a4j = "http://richfaces.org/a4j"
xmlns:rich = "http://richfaces.org/rich">
<f:view>
<h:head>
<title>Rich Faces Built in Skin</title>
</h:head>
<h:body>
<h:form>
<rich:panel style = "width:60%">
<rich:tabPanel switchType = "AJAX">
<rich:tab header = "Name">
Tutorials Point
</rich:tab>
<rich:tab header = "Features">
Best Place to learn
</rich:tab>
</rich:tabPanel>
</rich:panel>
</h:form>
</h:body>
</f:view>
</ui:composition>
Une fois que nous avons exécuté cette page, voici la sortie dans le navigateur, où chaque onglet se propage dynamiquement pour générer une sortie différente. Une fois que vous avez frappé l'onglet suivant, il affichera une sortie différente.
Dans l'exemple ci-dessus, <rich: panel> crée un panneau dans lequel nous créons différents onglets à l'aide de <rich: tab>. Le <rich: tabPanel switchType = "AJAX"> fournit une transition AJAX de l'onglet utilisé.
Création / modification de la peau
Skin n'est rien d'autre qu'une version étendue de la conception CSS, qui sera appliquée à la page Web au moment de l'exécution. Dans la section précédente, nous avons appris quelques fonctionnalités intégrées de base du skin. Dans cette section, nous allons créer notre propre skin ou modifier le skin existant. La peau des RichFaces peut être personnalisée aux trois niveaux suivants.
Skin property file- Tous les skins sont générés via différents fichiers de propriétés mentionnés dans le fichier jar «rechfaces-a4j-4.5.17.Final». Tout ce que nous devons faire est de créer un même fichier de propriétés et de le conserver dans notre dossier source et de modifier sa propriété. Nous devons modifier notre «web.xml» en conséquence pour refléter notre nouvelle propriété de skin sur le site Web.
Component style sheet - Implémentez le nouveau fichier CSS de votre choix et utilisez-le dans l'application.
Overwrite style class - On peut écraser le style en mentionnant directement les propriétés du style dans le fichier xhtml.
Analysons un exemple. Nous allons personnaliser notre ancien skin «classique». Créez un fichier de propriétés dans le package «source» et nommez-le «custom.skin.properties». Voici les entrées de ce fichier de propriétés qui ont été copiées à partir d'autres fichiers de propriétés disponibles dans le fichier jar mentionné ci-dessus.
#Colors
headerBackgroundColor = #black
headerGradientColor = #DF5858
headerTextColor = #FFFFFF
headerWeightFont = bold
generalBackgroundColor = #f1f1f1
generalTextColor = #000000
generalSizeFont = 10px
generalFamilyFont = Arial, Verdana, sans-serif
controlTextColor = #000000
controlBackgroundColor = #ffffff
additionalBackgroundColor = #F9E4E4
shadowBackgroundColor = #000000
shadowOpacity = 1
panelBorderColor = #C0C0C0
subBorderColor = #ffffff
tabBackgroundColor = #EDAEAE
tabDisabledTextColor = #C47979
trimColor = #F7C4C4
tipBackgroundColor = #FAE6B0
tipBorderColor = #E5973E
selectControlColor = #FF9409
generalLinkColor = #CF0000
hoverLinkColor = #FF0000
visitedLinkColor = #CF0000
# Fonts
headerSizeFont = 11px
headerFamilyFont = Arial, Verdana, sans-serif
tabSizeFont = 11
tabFamilyFont = Arial, Verdana, sans-serif
buttonSizeFont = 11
CHAPTER 11 ■ SKINS 223
buttonFamilyFont = Arial, Verdana, sans-serif
tableBackgroundColor = #FFFFFF
tableFooterBackgroundColor = #cccccc
tableSubfooterBackgroundColor = #f1f1f1
tableBorderColor = #C0C0C0
tableBorderWidth = 1px
#Calendar colors
calendarWeekBackgroundColor = #f5f5f5
calendarHolidaysBackgroundColor = #FFF1F1
calendarHolidaysTextColor = #980808
calendarCurrentBackgroundColor = #808080
calendarCurrentTextColor = #ffffff
calendarSpecBackgroundColor = #f1f1f1
calendarSpecTextColor = #000000
warningColor = #FFE6E6
warningBackgroundColor = #FF0000
editorBackgroundColor = #F1F1F1
editBackgroundColor = #FEFFDA
#Gradients
Gradient Type = plain
En fonction du niveau de compétence, nous pouvons modifier n'importe quel attribut de ce fichier de propriétés. Nous pouvons ajouter une nouvelle classe de style ou éditer celle existante. Une fois que nous avons terminé la création du nouveau fichier de propriétés, il est temps d'ajouter le même dans le fichier «web.xml». Voici l'entrée du "web.xml", qui devrait pointer vers notre peau.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>custom</param-value>
</context-param>
Note - Assurez-vous que le nouveau fichier de propriétés est présent dans le répertoire source, sinon il lancera une erreur d'exécution disant «NoClassFound Exception».
Allez-y et exécutez le fichier précédent nommé "SkinExample.xhtml". Voici la sortie dans le navigateur, où nous pourrons voir que l'apparence et la convivialité du site Web ont changé en «Ruby» car un nouveau fichier de propriétés a été copié à partir du fichier ruby.properties.
Changer la peau au moment de l'exécution
Dans cet exemple, nous allons changer la peau au moment de l'exécution. Créez une classe d'habillage comme celle-ci.
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class skinBean {
private String skin;
public skinBean() {
this.skin="plane";
}
public String getSkin() {
return skin;
}
public void setSkin(String skin) {
this.skin = skin;
}
}
Modifiez ensuite le fichier «web.xml» comme suit, pour renseigner le nom du skin au moment de l'exécution.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>#{skinBean.skin}</param-value>
</context-param>
Après cela, nous devons modifier les fichiers de configuration de l'application JSF. Les fichiers peuvent être situés dans le dossier web-INF. Ajoutez-y la propriété bean suivante.
<managed-bean>
<managed-bean-name>skinBean</managed-bean-name>
<managed-bean-class>SkinBean</managed-bean-class>>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>skin</property-name>
<value>plain</value>
</managed-property>
</managed-bean>
Voici le code du fichier xhtml.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:a4j = "http://richfaces.org/a4j"
xmlns:f = "http://java.sun.com/jsf/core"
xmlns:rich = "http://richfaces.org/rich">
<h:head>
<title>TODO supply a title</title>
</h:head>
<h:body>
<h:form>
<div style = "display: block; float: left">
<h:selectOneRadio value = "#{skinBean.skin}" border = "0"
layout = "pageDirection" title = "Changing skin" style = "font-size: 8;
font-family: comic" 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 = "deepMarine" itemValue = "deepMarine" />
</h:selectOneRadio>
</div>
<div style = "display: block; float: left">
<rich:panel >
<rich:panelMenu style = "font-family: monospace; font-size: 12;">
Changing skin in runtime
</rich:panelMenu>
<rich:panelMenu style = "font-family: monospace; font-size: 12;">
This is a result of the modification "blueSky" skin
</rich:panelMenu>
</rich:panel>
</div>
</h:form>
</h:body>
</html>
Le morceau de code ci-dessus produira la sortie suivante dans le navigateur.
Dans l'exemple ci-dessus, nous sélectionnons initialement «plain», donc il pointe vers plain. Une fois que vous vous propagez via le bouton radio, la couleur change en conséquence.