You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2018/09/11 06:30:59 UTC

[struts-examples] 03/03: Adds an example how to use your own LocalizedTextProvider

This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts-examples.git

commit 59674d7d79a806c12c23380895da007c292fc42f
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Tue Sep 11 08:30:45 2018 +0200

    Adds an example how to use your own LocalizedTextProvider
---
 .../struts_example/MyLocalizedTextProvider.java    | 32 ++++++++++++++++++++++
 text-provider/src/main/resources/struts.xml        |  4 +++
 .../src/main/webapp/WEB-INF/content/success.jsp    |  4 +++
 .../src/main/webapp/resources/global.properties    |  1 +
 4 files changed, 41 insertions(+)

diff --git a/text-provider/src/main/java/org/apache/struts_example/MyLocalizedTextProvider.java b/text-provider/src/main/java/org/apache/struts_example/MyLocalizedTextProvider.java
new file mode 100644
index 0000000..9d6ba3c
--- /dev/null
+++ b/text-provider/src/main/java/org/apache/struts_example/MyLocalizedTextProvider.java
@@ -0,0 +1,32 @@
+package org.apache.struts_example;
+
+import com.opensymphony.xwork2.util.StrutsLocalizedTextProvider;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+public class MyLocalizedTextProvider extends StrutsLocalizedTextProvider {
+
+    public MyLocalizedTextProvider() {
+        super();
+
+        URL[] urls;
+        try {
+            String resourceFolder = "src/main/webapp/resources";
+            File file = new File(resourceFolder);
+            if (!file.exists() || !file.isDirectory()){
+                throw new RuntimeException("External resource not found file not found");
+            }
+            URL url = file.toURI().toURL();
+            System.out.println(url);
+            urls = new URL[]{url};
+            ClassLoader cl = new URLClassLoader(urls, this.getCurrentThreadContextClassLoader());
+            this.setDelegatedClassLoader(cl);
+            this.addDefaultResourceBundle("global");
+        } catch (MalformedURLException e) {
+            throw new RuntimeException("MalformedURLException occurred during the messageBundle initialisation", e);
+        }
+    }
+}
diff --git a/text-provider/src/main/resources/struts.xml b/text-provider/src/main/resources/struts.xml
index 189d97a..c625353 100644
--- a/text-provider/src/main/resources/struts.xml
+++ b/text-provider/src/main/resources/struts.xml
@@ -28,6 +28,10 @@
     type="com.opensymphony.xwork2.TextProvider" />
   <constant name="struts.xworkTextProvider" value="MyTextProviderSupport" />
   -->
+
+  <bean type="com.opensymphony.xwork2.LocalizedTextProvider" name="myProvider" class="org.apache.struts_example.MyLocalizedTextProvider" scope="singleton" />
+
+  <constant name="struts.localizedTextProvider" value="myProvider" />
   
   <package name="default" extends="struts-default">
 
diff --git a/text-provider/src/main/webapp/WEB-INF/content/success.jsp b/text-provider/src/main/webapp/WEB-INF/content/success.jsp
index b90803c..5b089a3 100644
--- a/text-provider/src/main/webapp/WEB-INF/content/success.jsp
+++ b/text-provider/src/main/webapp/WEB-INF/content/success.jsp
@@ -11,6 +11,10 @@
   <s:text name="default.index.title"/>
 </h1>
 
+<h2>
+  <s:text name="global.key"/>
+</h2>
+
 <h3>Select your provider</h3>
 <ul>
   <li>
diff --git a/text-provider/src/main/webapp/resources/global.properties b/text-provider/src/main/webapp/resources/global.properties
new file mode 100644
index 0000000..8da2d61
--- /dev/null
+++ b/text-provider/src/main/webapp/resources/global.properties
@@ -0,0 +1 @@
+global.key=Global Text
\ No newline at end of file