From seam-commits at lists.jboss.org Mon May 12 07:35:46 2008 Content-Type: multipart/mixed; boundary="===============7553831903068591996==" MIME-Version: 1.0 From: seam-commits at lists.jboss.org To: seam-commits at lists.jboss.org Subject: [seam-commits] Seam SVN: r8162 - trunk/doc/Seam_Reference_Guide/en-US and 1 other directory. Date: Mon, 12 May 2008 07:35:45 -0400 Message-ID: --===============7553831903068591996== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: pete.muir(a)jboss.org Date: 2008-05-12 07:35:45 -0400 (Mon, 12 May 2008) New Revision: 8162 Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/I18n.xml trunk/doc/Seam_Reference_Guide/en-US/I18n.xml Log: Corrections for i8n chapter and port to trunk Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/I18n.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/I18n.xml 2008-05-12 10= :34:47 UTC (rev 8161) +++ branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/I18n.xml 2008-05-12 11= :35:45 UTC (rev 8162) @@ -2,106 +2,127 @@ - Internationalization, localization and themes + Internationalization, localization and themes = - Seam makes it easy to build internationalized applications. First, - let's walk through all the stages needed to internationalize and localize - your app. Then we'll take a look at the components Seam bundles. + + Seam makes it easy to build internationalized applications. First, l= et's = + walk through all the stages needed to internationalize and localize = your = + app. Then we'll take a look at the components Seam bundles. + = -
- Internationalizing your app +
+ Internationalizing your app = - JEE application is consisting from many components and all can b= reak - the whole view on the localizated target. + + A JEE application consists of many components and all of them mus= t be = + configured properly for your application to be localized. + = - Starting at the bottom, the first step is to ensure that your - database server and client is using the correct character encoding for - your locale. Normally you'll want to use UTF-8. How to do this is outs= ide - the scope of this tutorial. + + Starting at the bottom, the first step is to ensure that your dat= abase = + server and client is using the correct character encoding for you= r = + locale. Normally you'll want to use UTF-8. How to do this is outs= ide + the scope of this tutorial. + = -
- Application server configuration +
+ Application server configuration = - To ensure that application server receive correct parameters - attributes from client requests you have to adapt the configuration = of - tomcat connector. If you use Tomcat or JBOSS AS, add attribute - URIEncoding=3D"UTF-8" into connector configuration. In = case - JBOSS AS 4.2.2 change - ${JBOSS_HOME}/server/(default)/deploy/jboss-web.deployer/serve= r.xml - configuration file like the following: + + To ensure that the application server receives the request = + parameters in the correct encoding from client requests you ha= ve to = + configure the tomcat connector. If you use Tomcat or JBoss AS,= add + the URIEncoding=3D"UTF-8" attribute to the = + connector configuration. For JBoss AS 4.2 change = + ${JBOSS_HOME}/server/(default)/deploy/jboss-web.deplo= yer/server.xml: + = - <Connector port=3D"8080" URIEncoding=3D"UTF-8"/&g= t; + <Connector port=3D"8080" URIEncod= ing=3D"UTF-8"/> = - There is also another configuration atribute - useBodyEncodingForURI, which is logically better for us= e, - because it says that encoding for URI will be taken from setting of = web - page body. In other words the encoding of the parameters in URL will= be - same as the content of the web page. Example of configuration is the - following: + + There is alternative which is probably better. You can tell JB= oss AS + that the encoding for the request parameters will be taken fro= m the + request: + = - <Connector port=3D"8080" useBodyEncodingForURI=3D= "true"/> -
+ <Connector port=3D"8080" useBodyE= ncodingForURI=3D"true"/> +
= -
- Translated application strings +
+ Translated application strings = - Correct localized application uses for all static texts in JSF - pages labels, which can be translated and loaded from resource bundl= es - with defined labels. First you need to ensure that your resource bun= dle - is encoded using the desired character encoding. By default it uses - ISO-8859-1. Although ISO-8859-1 supports many languages, it doesn't - represent everything. So if you want to translate in another languga= ge, - which uses characters outside the standard ASCII set, you need to use - encoding which covers all these non-ascii characters. + + You'll also need localized strings for all the messa= ges + in your application (for example field labels on your views). = First = + you need to ensure that your resource bundle is encoded using = the = + desired character encoding. By default ASCII is used. Although= ASCII = + is enough for many languages, it doesn't provide characters fo= r all = + languages. + = - You'll need to understand another caveat regarding property - bundles; you must create them in ASCII, or use Unicode escape codes = to - represent Unicode characters. Since you don't compile a property fil= e to - byte codes, there is no way to tell the JVM which character set to u= se. - So you must explicitly use ASCII characters or use the escape sequen= ces. - You can represent a Unicode character in any Java file using \uXXXX, - where XXXX is the hexidecimal representation of the character. Write - your translation of labels (see below section Labels) to file and then you have to conve= rt the - content of file into escaped format through the java command tool - native2ascii provided in the JDK. This tool will convert a file writ= ten - in your native encoding to one that represents non-ASCII characters = as - Unicode escape sequences. + + Resource bundles must be created in ASCII, or use Unicode esca= pe = + codes to represent Unicode characters. Since you don't compile= a = + property file to byte code, there is no way to tell the JVM wh= ich = + character set to use. So you must use either ASCII characters= or = + escape characters not in the ASCII character set. + You can represent a Unicode character in any Java file using \= uXXXX, + where XXXX is the hexidecimal representation of the character. + + = + + You can write your translation of labels = + (Labels) to your messages re= source = + bundle in the native encoding and then convert the content of = the = + file into the escaped format through the tool native2= ascii + provided in the JDK. This tool will convert a file written in = your = + native encoding to one that represents non-ASCII characters as + Unicode escape sequences. + = - Usage of this tool is described at http://java.sun.com/j2se/1.5.0/docs/tooldocs/index.html#intl - for Java 5 or at http= ://java.sun.com/javase/6/docs/technotes/tools/#intl - for Java 6, but briefly, on command line write:$ native2ascii -encoding UTF-8 messages_cs.properties > message= s_cs_escaped.propertiesThen - converted file can be used in application as resource bundle with a - proper locale code (see Labels). -
+ + Usage of this tool is described = + here for Java 5 + or = + here for Java 6. + For example, to convert a file from UTF-8: + + = + $ native2ascii -encoding UTF-8 messages_c= s.properties > messages_cs_escaped.properties + = +
= -
- Other encoding settings +
+ Other encoding settings = - We need to make sure that the view (JSF, JSP or XHTML) displays - your correct localized data and messages using the correct character= set - and also any data submitted uses the correct encoding. + + We need to make sure that the view displays your localized dat= a and = + messages using the correct character set and also any data sub= mitted + uses the correct encoding. + = - To set the display character encoding, you need to use the - <f:view locale=3D"cs_CZ"/> tag for example = to use - Czech locale in Java Server Faces technology. You may want to change= the - encoding of the xml document itself if you want to embed localized - strings in the xml. To do this alter the encoding attribute in xml - declaration <?xml version=3D"1.0" - encoding=3D"UTF-8"?> as required. + + To set the display character encoding, you need to use the = + <f:view locale=3D"cs_CZ"/> tag (here = we tell = + JSF to use the Czech locale). You may want to change the encod= ing of = + the xml document itself if you want to embed localized strings= in the + xml. To do this alter the encoding attribute in xml declaratio= n = + <?xml version=3D"1.0" encoding=3D"UTF-8"?> as = + required. + = - Also JSF/Facelets should submit any requests in the desired - character, but to make sure any requests that don't specify an encod= ing - you can use a Servlet filter to set it in Seam components.xml - configuration file: + + Also JSF/Facelets should submit any requests using the specifi= ed + character encoding, but to make sure any requests that don't s= pecify + an encoding you can force the request encoding using a servlet = + filter. Configure this in components.xml: + = - <web:character-encoding-filter encod= ing=3D"UTF-8" = + -
-
+ url-pattern=3D"*.seam" />]]> +
+
=
Locales<anchor id=3D"locales" /> Modified: trunk/doc/Seam_Reference_Guide/en-US/I18n.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/doc/Seam_Reference_Guide/en-US/I18n.xml 2008-05-12 10:34:47 UTC (= rev 8161) +++ trunk/doc/Seam_Reference_Guide/en-US/I18n.xml 2008-05-12 11:35:45 UTC (= rev 8162) @@ -1,201 +1,287 @@ - - + - Internationalization and themes - - Seam makes it easy to build internationalized applications by - providing several built-in components for handling multi-language - UI messages. - - = -
- Locales - - Each user login session has an associated instance of - java.util.Locale (available to the = - application as a component named = - locale). Under normal circumstances, - you won't need to do any special configuration to set - the locale. Seam just delegates to JSF to determine - the active locale: - - = - - - If there is a locale associated with the HTTP request - (the browser locale), and that locale is in the list - of supported locales from faces-config.xml, = - use that locale for the rest of the session. - - - Otherwise, if a default locale was specified in the - faces-config.xml, use that locale = - for the rest of the session. - - - Otherwise, use the default locale of the server. - - - = - - It is possible to set the locale - manually via the Seam configuration properties - org.jboss.seam.international.localeSelector.language<= /literal>, - org.jboss.seam.international.localeSelector.country and - org.jboss.seam.international.localeSelector.variant, but = - we can't think of any good reason to ever do this. - - = - - It is, however, useful to allow the user to set the - locale manually via the application user interface. - Seam provides built-in functionality for overriding - the locale determined by the algorithm above. All - you have to do is add the following fragment to a = - form in your JSP or Facelets page: - - = - - - - - -]]> + Internationalization, localization and themes = - - Or, if you want a list of all supported locales from = - faces-config.xml, just use: - + + Seam makes it easy to build internationalized applications. First, l= et's = + walk through all the stages needed to internationalize and localize = your = + app. Then we'll take a look at the components Seam bundles. + = - - - -]]> +
+ Internationalizing your app = - - When this use selects an item from the drop-down, and = - clicks the button, the Seam and JSF locales will be = - overridden for the rest of the session. - - = -
- = + + A JEE application consists of many components and all of them mus= t be = + configured properly for your application to be localized. + + + + Starting at the bottom, the first step is to ensure that your dat= abase = + server and client is using the correct character encoding for you= r = + locale. Normally you'll want to use UTF-8. How to do this is outs= ide + the scope of this tutorial. + + +
+ Application server configuration + + + To ensure that the application server receives the request = + parameters in the correct encoding from client requests you ha= ve to = + configure the tomcat connector. If you use Tomcat or JBoss AS,= add + the URIEncoding=3D"UTF-8" attribute to the = + connector configuration. For JBoss AS 4.2 change = + ${JBOSS_HOME}/server/(default)/deploy/jboss-web.deplo= yer/server.xml: + + + <Connector port=3D"8080" URIEncod= ing=3D"UTF-8"/> + + + There is alternative which is probably better. You can tell JB= oss AS + that the encoding for the request parameters will be taken fro= m the + request: + + + <Connector port=3D"8080" useBodyE= ncodingForURI=3D"true"/> +
+ +
+ Translated application strings + + + You'll also need localized strings for all the messa= ges + in your application (for example field labels on your views). = First = + you need to ensure that your resource bundle is encoded using = the = + desired character encoding. By default ASCII is used. Although= ASCII = + is enough for many languages, it doesn't provide characters fo= r all = + languages. + + + + Resource bundles must be created in ASCII, or use Unicode esca= pe = + codes to represent Unicode characters. Since you don't compile= a = + property file to byte code, there is no way to tell the JVM wh= ich = + character set to use. So you must use either ASCII characters= or = + escape characters not in the ASCII character set. + You can represent a Unicode character in any Java file using \= uXXXX, + where XXXX is the hexidecimal representation of the character. + + = + + You can write your translation of labels = + (Labels) to your messages re= source = + bundle in the native encoding and then convert the content of = the = + file into the escaped format through the tool native2= ascii + provided in the JDK. This tool will convert a file written in = your = + native encoding to one that represents non-ASCII characters as + Unicode escape sequences. + + + + Usage of this tool is described = + here for Java 5 + or = + here for Java 6. + For example, to convert a file from UTF-8: + + = + $ native2ascii -encoding UTF-8 messages_c= s.properties > messages_cs_escaped.properties + = +
+ +
+ Other encoding settings + + + We need to make sure that the view displays your localized dat= a and = + messages using the correct character set and also any data sub= mitted + uses the correct encoding. + + + + To set the display character encoding, you need to use the = + <f:view locale=3D"cs_CZ"/> tag (here = we tell = + JSF to use the Czech locale). You may want to change the encod= ing of = + the xml document itself if you want to embed localized strings= in the + xml. To do this alter the encoding attribute in xml declaratio= n = + <?xml version=3D"1.0" encoding=3D"UTF-8"?> as = + required. + + + + Also JSF/Facelets should submit any requests using the specifi= ed + character encoding, but to make sure any requests that don't s= pecify + an encoding you can force the request encoding using a servlet = + filter. Configure this in components.xml: + + + ]]> +
+
+ +
+ Locales<anchor id=3D"locales" /> + + Each user login session has an associated instance of + java.util.Locale (available to the application as a + component named locale). Under normal circumstances, + you won't need to do any special configuration to set the locale. Seam + just delegates to JSF to determine the active locale: + + + + If there is a locale associated with the HTTP request (the + browser locale), and that locale is in the list of supported local= es + from faces-config.xml, use that locale for the = rest + of the session. + + + + Otherwise, if a default locale was specified in the + faces-config.xml, use that locale for the rest = of + the session. + + + + Otherwise, use the default locale of the server. + + + + It is possible to set the locale manually v= ia + the Seam configuration properties + org.jboss.seam.international.localeSelector.language, + org.jboss.seam.international.localeSelector.country and + org.jboss.seam.international.localeSelector.variant, + but we can't think of any good reason to ever do this. + + It is, however, useful to allow the user to set the locale manua= lly + via the application user interface. Seam provides built-in functionali= ty + for overriding the locale determined by the algorithm above. All you h= ave + to do is add the following fragment to a form in your JSP or Facelets + page: + + <h:selectOneMenu value=3D"#{localeSe= lector.language}"> + <f:selectItem itemLabel=3D"English" itemValue=3D"en"/> + <f:selectItem itemLabel=3D"Deutsch" itemValue=3D"de"/> + <f:selectItem itemLabel=3D"Francais" itemValue=3D"fr"/> +</h:selectOneMenu> +<h:commandButton action=3D"#{localeSelector.select}" value=3D"#{message= s['ChangeLanguage']}"/> + + Or, if you want a list of all supported locales from + faces-config.xml, just use: + + <h:selectOneMenu value=3D"#{localeSe= lector.localeString}"> + <f:selectItems value=3D"#{localeSelector.supportedLocales}"/> +</h:selectOneMenu> +<h:commandButton action=3D"#{localeSelector.select}" value=3D"#{message= s['ChangeLanguage']}"/> + + When this use selects an item from the drop-down, and clicks the + button, the Seam and JSF locales will be overridden for the rest of the + session. +
+ +
+ Labels<anchor id=3D"labels" /> + + JSF supports internationalization of user interface labels and + descriptive text via the use of <f:loadBundle />. + You can use this approach in Seam applications. Alternatively, you can + take advantage of the Seam messages component to + display templated labels with embedded EL expressions. +
- Labels - - JSF supports internationalization of user interface labels and - descriptive text via the use of <f:loadBundle />= ;. - You can use this approach in Seam applications. Alternatively,= you can - take advantage of the Seam messages compone= nt to = - display templated labels with embedded EL expressions. - - = -
- Defining labels - - Seam provides a java.util.ResourceBundle (a= vailable = - to the application as a org.jboss.seam.core.resourceB= undle). = - You'll need to make your internationalized labels available vi= a this special = - resource bundle. By default, the resource bundle used by Seam = is named = - messages and so you'll need to define your = labels = - in files named messages.properties, = - messages_en.properties, - messages_en_AU.properties, etc. These - files usually belong in the WEB-INF/classes = - directory. - - = - - So, in messages_en.properties: - - = - + Defining labels = - - And in messages_en_AU.properties: - - = - - = - - You can select a different name for the resource bundle by set= ting - the Seam configuration property named - org.jboss.seam.core.resourceLoader.bundleNames. You can even specify - a list of resource bundle names to be searched (depth first) f= or - messages. - + Seam provides a java.util.ResourceBundle + (available to the application as a + org.jboss.seam.core.resourceBundle). You'll need to make y= our + internationalized labels available via this special resource bundle.= By + default, the resource bundle used by Seam is named + messages and so you'll need to define your labels= in + files named messages.properties, + messages_en.properties, + messages_en_AU.properties, etc. These files usually belong= in + the WEB-INF/classes directory. = - - - mycompany_messages - standard_messages = - -]]> + So, in messages_en.properties: = - - If you want to define a message just for a particular page, you - can specify it in a resource bundle with the same name as the - JSF view id, with the leading / and trailing - file extension removed. So we could put our message in = - welcome/hello_en.properties if we only need= ed - to display the message on /welcome/hello.jsp. - - = - - You can even specify an explicit bundle name in pages= .xml: - - = - ]]> - = - - Then we could use messages defined in HelloMessages.p= roperties - on /welcome/hello.jsp. - + Hello=3DHello + + And in messages_en_AU.properties: + + Hello=3DG'day + + You can select a different name for the resource bundle by set= ting + the Seam configuration property named + org.jboss.seam.core.resourceLoader.bundleNames. You can ev= en + specify a list of resource bundle names to be searched (depth first)= for + messages. + + <core:resource-loader> + <core:bundle-names> + <value>mycompany_messages</value> + <value>standard_messages</value> = + </core:bundle-names> +</core:resource-loader> + + If you want to define a message just for a particular page, you + can specify it in a resource bundle with the same name as the JSF vi= ew + id, with the leading / and trailing file extension + removed. So we could put our message in + welcome/hello_en.properties if we only needed to display t= he + message on /welcome/hello.jsp. + + You can even specify an explicit bundle name in + pages.xml: + + <page view-id=3D"/welcome/hello.jsp"= bundle=3D"HelloMessages"/> + + Then we could use messages defined in + HelloMessages.properties on + /welcome/hello.jsp.
- = +
- Displaying labels + Displaying labels = - - If you define your labels using the Seam resource bundle, you'= ll - be able to use them without having to type <f:load= Bundle ... /> - on every page. Instead, you can simply type: - - = - ]]> - = - - or: - - = - ]]> - = - - Even better, the messages themselves may contain EL expression= s: - + If you define your labels using the Seam resource bundle, you'= ll + be able to use them without having to type <f:loadBundle + ... /> on every page. Instead, you can simply type: = - - - = - - You can even use the messages in your code: - + <h:outputText value=3D"#{messages[= 'Hello']}"/> = - messages;]]> - + or: = + <h:outputText value=3D"#{messages.= Hello}"/> + + Even better, the messages themselves may contain EL + expressions: + + Hello=3DHello, #{user.firstName} #{user.lastName} + + Hello=3DG'day, #{user.firstName} + + You can even use the messages in your code: + + @In private Map<String, String> = messages; + + @In("#{messages['Hello']}") private St= ring helloMessage;
- = +
- Faces messages - - The facesMessages component is a super-conv= enient = - way to display success or failure messages to the user. The fu= nctionality = - we just described also works for faces messages: - + Faces messages = - The facesMessages component is a + super-convenient way to display success or failure messages to the u= ser. + The functionality we just described also works for faces + messages: + + @Name("hello") @Stateless public class HelloBean implements Hello { @In FacesMessages facesMessages; @@ -203,126 +289,110 @@ public String sayIt() { facesMessages.addFromResourceBundle("Hello"); } -}]]> +} = - - This will display Hello, Gavin King or G'day, Gavin, - depending upon the user's locale. - - + This will display Hello, Gavin King or + G'day, Gavin, depending upon the user's + locale.
-
- = -
- Timezones - - There is also a session-scoped instance of java.util.= Timezone, - named org.jboss.seam.international.timezone= , and a Seam component for changing = - the timezone named org.jboss.seam.international.timez= oneSelector. By default, = - the timezone is the default timezone of the server. Unfortunat= ely, the JSF specification = - says that all dates and times should be assumed to be UTC, and= displayed as UTC, unless = - a timezone is explicitly specified using <f:conver= tDateTime>. = - This is an extremely inconvenient default behavior. - - - Seam overrides this behavior, and defaults all dates and times= to the Seam timezone. - In addition, Seam provides the <s:convertDateTime&= gt; tag which = - always performs conversions in the Seam timezone. - -
- = -
- Themes - - Seam applications are also very easily skinnable. The theme AP= I is very - similar to the localization API, but of course these two conce= rns are - orthogonal, and some applications support both localization an= d themes. - - = - - First, configure the set of supported themes: - - = - - - default - accessible - printable - -]]> - = - - Note that the first theme listed is the default theme. - +
= - - Themes are defined in a properties file with the same name as = the theme. - For example, the default theme is defined a= s a set of - entries in default.properties. For example, = - default.properties might define: - - = - +
+ Timezones = - - Usually the entries in a theme resource bundle will be paths t= o CSS styles - or images and names of facelets templates (unlike localization= resource - bundles which are usually text). - - = - - Now we can use these entries in our JSP or facelets pages. For= example, - to theme the stylesheet in a facelets page: - - = - ]]> - = - Or, when the page definition resides in a subdirectory: - = - ]]> - = - - Most powerfully, facelets lets us theme the template used by a= <ui:composition>: - + There is also a session-scoped instance of + java.util.Timezone, named + org.jboss.seam.international.timezone, and a Seam component = for + changing the timezone named + org.jboss.seam.international.timezoneSelector. By default, t= he + timezone is the default timezone of the server. Unfortunately, the JSF + specification says that all dates and times should be assumed to be UT= C, + and displayed as UTC, unless a timezone is explicitly specified using + <f:convertDateTime>. This is an extremely + inconvenient default behavior. = - Seam overrides this behavior, and defaults all dates and times to + the Seam timezone. In addition, Seam provides the + <s:convertDateTime> tag which always performs conversi= ons + in the Seam timezone. +
+ +
+ Themes + + Seam applications are also very easily skinnable. The theme API = is + very similar to the localization API, but of course these two concerns= are + orthogonal, and some applications support both localization and + themes. + + First, configure the set of supported themes: + + <theme:theme-selector cookie-enabled= =3D"true"> + <theme:available-themes> + <value>default</value> + <value>accessible</value> + <value>printable</value> + </theme:available-themes> +</theme:theme-selector> + + Note that the first theme listed is the default theme. + + Themes are defined in a properties file with the same name as the + theme. For example, the default theme is defined as= a + set of entries in default.properties. For example, + default.properties might define: + + css ../screen.css +template /template.xhtml + + Usually the entries in a theme resource bundle will be paths to = CSS + styles or images and names of facelets templates (unlike localization + resource bundles which are usually text). + + Now we can use these entries in our JSP or facelets pages. For + example, to theme the stylesheet in a facelets page: + + <link href=3D"#{theme.css}" rel=3D"s= tylesheet" type=3D"text/css" /> + + Or, when the page definition resides in a subdirectory: + + <link href=3D"#{facesContext.externa= lContext.requestContextPath}#{theme.css}" = + rel=3D"stylesheet" type=3D"text/css" /> + + Most powerfully, facelets lets us theme the template used by a + <ui:composition>: + + <ui:composition xmlns=3D"http://www.= w3.org/1999/xhtml" xmlns:ui=3D"http://java.sun.com/jsf/facelets" xmlns:h=3D"http://java.sun.com/jsf/html" xmlns:f=3D"http://java.sun.com/jsf/core" - template=3D"#{theme.template}">]]> - = - - Just like the locale selector, there is a built-in theme selec= tor to allow = - the user to freely switch themes: - + template=3D"#{theme.template}"> = - - - -]]> + Just like the locale selector, there is a built-in theme selecto= r to + allow the user to freely switch themes: = -
- = -
- Persisting locale and theme preferences via cookies - - The locale selector, theme selector and timezone selector all = support = - persistence of locale and theme preference to a cookie. Simply= set the = - cookie-enabled property in compone= nts.xml: - - = - - - default - accessible - printable - - + <h:selectOneMenu value=3D"#{themeSel= ector.theme}"> + <f:selectItems value=3D"#{themeSelector.themes}"/> +</h:selectOneMenu> +<h:commandButton action=3D"#{themeSelector.select}" value=3D"Select The= me"/> +
= -]]> +
+ Persisting locale and theme preferences via cookies = -
- = - + The locale selector, theme selector and timezone selector all + support persistence of locale and theme preference to a cookie. Simply= set + the cookie-enabled property in + components.xml: + + <theme:theme-selector cookie-enabled= =3D"true"> + <theme:available-themes> + <value>default</value> + <value>accessible</value> + <value>printable</value> + </theme:available-themes> +</theme:theme-selector> + +<international:locale-selector cookie-enabled=3D"true"/> +
+
\ No newline at end of file --===============7553831903068591996==--