Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I finally got this working with danb's help above.</p> <p>This is my resource bundle class and resource bundle control class.</p> <p>I used this code from @[danb]'s.</p> <pre><code>ResourceBundle bundle = ResourceBundle.getBundle("AwesomeBundle", locale, DbResourceBundle.getMyControl()); javax.servlet.jsp.jstl.core.Config.set(actionBeanContext.getRequest(), Config.FMT_LOCALIZATION_CONTEXT, new LocalizationContext(bundle, locale)); </code></pre> <p>and wrote this class.</p> <pre><code>public class DbResourceBundle extends ResourceBundle { private Properties properties; public DbResourceBundle(Properties inProperties) { properties = inProperties; } @Override @SuppressWarnings(value = { "unchecked" }) public Enumeration&lt;String&gt; getKeys() { return properties != null ? ((Enumeration&lt;String&gt;) properties.propertyNames()) : null; } @Override protected Object handleGetObject(String key) { return properties.getProperty(key); } public static ResourceBundle.Control getMyControl() { return new ResourceBundle.Control() { @Override public List&lt;String&gt; getFormats(String baseName) { if (baseName == null) { throw new NullPointerException(); } return Arrays.asList("db"); } @Override public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException { if ((baseName == null) || (locale == null) || (format == null) || (loader == null)) throw new NullPointerException(); ResourceBundle bundle = null; if (format.equals("db")) { Properties p = new Properties(); DataSource ds = (DataSource) ContextFactory.getApplicationContext().getBean("clinicalDataSource"); Connection con = null; Statement s = null; ResultSet rs = null; try { con = ds.getConnection(); StringBuilder query = new StringBuilder(); query.append("select label, value from i18n where bundle='" + StringEscapeUtils.escapeSql(baseName) + "' "); if (locale != null) { if (StringUtils.isNotBlank(locale.getCountry())) { query.append("and country='" + escapeSql(locale.getCountry()) + "' "); } if (StringUtils.isNotBlank(locale.getLanguage())) { query.append("and language='" + escapeSql(locale.getLanguage()) + "' "); } if (StringUtils.isNotBlank(locale.getVariant())) { query.append("and variant='" + escapeSql(locale.getVariant()) + "' "); } } s = con.createStatement(); rs = s.executeQuery(query.toString()); while (rs.next()) { p.setProperty(rs.getString(1), rs.getString(2)); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Can not build properties: " + e); } finally { DbUtils.closeQuietly(con, s, rs); } bundle = new DbResourceBundle(p); } return bundle; } @Override public long getTimeToLive(String baseName, Locale locale) { return 1000 * 60 * 30; } @Override public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) { return true; } }; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload