I have a project where I want to use the Struts Validator. By default the 
error messages are read from a properties file. However I'm required to 
read the error messages from a database. The question is how do I do this? 
I found this article 
http://www.informit.com/articles/article.asp?p=101174&rl=1, from the 
"Struts Kick Start" book, which shows how to do this but it doesn't seem 
to work.

Here is what I did. First I created a MessageResourcesFactory that creates 
my version of  MessageResources:

import org.apache.struts.util.MessageResources;
import org.apache.struts.util.MessageResourcesFactory;

public class MyMessageResourceFactory extends MessageResourcesFactory {

        public MessageResources createResources(String arg0) {
                return new DbMessageResources(this, arg0);
        }
}

Next I created my version of MessageResources:

import java.util.Locale;
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.MessageResourcesFactory;

public class DbMessageResources extends MessageResources implements 
java.io.Serializable
 {

        public MessageResource(MessageResourcesFactory arg0, String arg1) 
{
                super(arg0, arg1);
        }

        public String getMessage(Locale arg0, String key) {
                // based on locale and key, retrieve message from database
                // for this example just return the key
                return key;
        }

}

Lastly, the article says to add these parameters ("application" and 
"factory") to the ActionServlet config in web.xml file to tell Struts to 
use my implementation.

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
      <param-name>application</param-name>
      <param-value>org.example.DbMessageResources</param-value>
    </init-param>
    <init-param>
      <param-name>factory</param-name>
      <param-value>org.example.MyMessageResourceFactory </param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

Trouble is this code never gets called. I'm on Struts 1.2.7. Is this the 
right way to get Struts to use my version of MessageResources, or is there 
a different way to do this now? I've searched for more documentation 
regarding reading resources from the database, but haven't found much. Any 
hints, tips, or references would be greatly appreciated.

Thanks,
David



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to