Recipe 24.4 Creating a ResourceBundle as a Java Class


Problem

You want to create a ResourceBundle as a Java class.

Solution

Create a class that extends java.util.ListResourceBundle .

Discussion

If your application requires more functionality than a static properties file can provide (Recipe 24.3), you can create your ResourceBundles as Java classes: java.util.ListResourceBundle types. For instance, a particular resource might need to select its translation information from a database.

Example 24-4 includes the same information as the properties file in the prior recipe. However, its key/value pairs are stored in the form of a two-dimensional Object array. This class is stored in the same place as the .properties files in WEB-INF/i18n .

Example 24-4. Storing language information in a ListResourceBundle
 package com.jspservletcookbook;            import java.util.ListResourceBundle;   public class WelcomeBundle_es_ES extends ListResourceBundle {                static final Object[][] contents = {             {"Welcome", "Hola y recepcin"}      };                    public Object[][] getContents() {          return contents;      }        } 

This code snippet from a servlet shows how you could use this class.

Example 24-5. Calling a ListResourceBundle method from a ResourceBundle created as a Java class
 <!-- inside servlet goGet() or doPost() method, for instance --> ResourceBundle bundle = ResourceBundle.getBundle("i18n.WelcomeBundle_es_ES"); //Call inherited ListResourceBundle getKeys() method java.util.Enumeration enum = bundle.getKeys(); while (enum.hasMoreElements()){              //Prints out key: "Welcome"     out.println((String) enum.nextElement());     out.println("<br /><br />");                  }//while 

The ResourceBundle.getBundle() static method tries to find a Java class with the fully qualified name "i18n.WelcomeBundle_es_ES" (in this example). Failing that, it looks for a properties file of the same name (minus the .properties extension): i18n.WelcomeBundle_es_ES.properties .


See Also

The Javadoc for ListResourceBundle : http://java.sun.com/j2se/1.4.1/docs/api/java/util/ListResourceBundle.html; Recipe 24.3 on creating a ResourceBundle as a properties file.



Java Servlet & JSP Cookbook
Java Servlet & JSP Cookbook
ISBN: 0596005725
EAN: 2147483647
Year: 2004
Pages: 326

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net