RichFaces - Reiche Haut
RichFaces verfügt über eine neue Funktion namens Rich Skin, mit der Sie das Erscheinungsbild Ihrer Website zentral steuern können. Skin ist eine Implementierung alter CSS-Dateien auf hoher Ebene, die für den Back-End-Entwickler bequemer ist, um das Erscheinungsbild der Website zu steuern. Es stehen einige integrierte Skins zur Verfügung, die nach Ihren Wünschen angepasst werden können.
Eingebaute Haut
In der RichFaces-Komponenten-JAR-Datei sind eine Reihe integrierter Skins verfügbar. Im Folgenden finden Sie einige integrierte, reichhaltige Haut.
- Default
- Plain
- emeraldTown
- blueSky
- wine
- japanCherry
- ruby
- classic
- deepMarine
- NULL
Im folgenden Beispiel implementieren wir "klassische" Skin. Es ist sehr einfach, eine der oben genannten Skins zu implementieren. Bevor Sie fortfahren, fügen Sie den Skin in der Datei "web.xml" mit der unten angegebenen Codezeile hinzu. Wir können jede Haut unserer Wahl aus der obigen Liste hinzufügen. Wir müssen nur das <param-value> -Tag mit dem entsprechenden Skin-Namen ändern.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>classic</param-value>
</context-param>
Nachdem Sie dies hinzugefügt haben, erstellen Sie bitte eine "SkinExample.xhtml" -Datei und fügen Sie die folgende Codezeile hinzu.
<?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>
Sobald wir diese Seite ausgeführt haben, folgt die Ausgabe im Browser, in der sich jede Registerkarte dynamisch ausbreitet, um eine andere Ausgabe zu generieren. Sobald Sie auf die nächste Registerkarte klicken, wird eine andere Ausgabe angezeigt.
Im obigen Beispiel erstellt <rich: panel> ein Panel, in dem wir mithilfe von <rich: tab> verschiedene Registerkarten erstellen. Das <rich: tabPanel switchType = "AJAX"> bietet einen AJAX-Übergang der verwendeten Registerkarte.
Erstellen / Ändern der Haut
Skin ist nichts anderes als eine erweiterte Version des CSS-Designs, die zur Laufzeit auf die Webseite angewendet wird. Im vorherigen Abschnitt haben wir einige grundlegende integrierte Funktionen der Skin kennengelernt. In diesem Abschnitt erstellen wir unsere eigene Skin oder ändern die vorhandene Skin. Die Skin in den RichFaces kann auf den folgenden drei Ebenen angepasst werden.
Skin property file- Alle Skins werden über verschiedene Eigenschaftendateien generiert, die unter der JAR-Datei "rechfaces-a4j-4.5.17.Final" aufgeführt sind. Alles, was wir tun müssen, ist, dieselbe Eigenschaftendatei zu erstellen, sie in unserem Quellordner zu behalten und ihre Eigenschaft zu bearbeiten. Wir müssen unsere "web.xml" entsprechend ändern, um unsere neue Skin-Eigenschaft auf der Website zu berücksichtigen.
Component style sheet - Implementieren Sie eine neue CSS-Datei Ihrer Wahl und verwenden Sie sie in der Anwendung.
Overwrite style class - Sie können den Stil überschreiben, indem Sie die Stileigenschaften in der xhtml-Datei direkt erwähnen.
Betrachten wir ein Beispiel. Wir werden unsere bisherige "klassische" Haut anpassen. Erstellen Sie eine Eigenschaftendatei im Quellpaket und nennen Sie sie "custom.skin.properties". Im Folgenden sind die Einträge dieser Eigenschaftendatei aufgeführt, die aus anderen Eigenschaftendateien kopiert wurden, die in der oben genannten JAR-Datei verfügbar sind.
#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
Abhängig von der Fähigkeitsstufe können wir jedes Attribut in dieser Eigenschaftendatei ändern. Wir können eine neue Stilklasse hinzufügen oder die vorhandene bearbeiten. Sobald wir mit der Erstellung der neuen Eigenschaftendatei fertig sind, ist es Zeit, diese in die Datei "web.xml" einzufügen. Es folgt der Eintrag "web.xml", der auf unsere Haut verweisen soll.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>custom</param-value>
</context-param>
Note - Stellen Sie sicher, dass die neue Eigenschaftendatei im Quellverzeichnis vorhanden ist. Andernfalls wird ein Laufzeitfehler mit der Meldung "NoClassFound Exception" ausgegeben.
Führen Sie die vorherige Datei mit dem Namen "SkinExample.xhtml" aus. Es folgt die Ausgabe im Browser, in der wir sehen können, dass sich das gesamte Erscheinungsbild der Website in "Ruby" geändert hat, als eine neue Eigenschaftendatei aus der Datei ruby.properties kopiert wurde.
Ändern der Haut zur Laufzeit
In diesem Beispiel wird die Skin zur Laufzeit geändert. Erstellen Sie eine Skin-Klasse wie die folgende.
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;
}
}
Ändern Sie dann die Datei "web.xml" wie folgt, um den Skin-Namen zur Laufzeit zu füllen.
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>#{skinBean.skin}</param-value>
</context-param>
Danach müssen wir die Konfigurationsdateien der JSF-Anwendung ändern. Die Dateien befinden sich im Ordner web-INF. Fügen Sie die folgende Bean-Eigenschaft hinzu.
<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>
Es folgt der xhtml-Dateicode.
<?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>
Der obige Code erzeugt die folgende Ausgabe im Browser.
Im obigen Beispiel wählen wir zunächst "normal" aus, daher zeigt es auf "einfach". Sobald Sie sich über das Optionsfeld ausbreiten, ändert sich die Farbe entsprechend.