I found the answer I was looking for. The solution is to set the "factory" 
attribute of the "message-resource" element in struts-config, like so:

  <message-resources 
        parameter="MyMessageResources" 
        factory="my.example.MyMessageResourceFactory">
  </message-resources>


> 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]
> 


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

Reply via email to