I think I'll resort to using the ResourceBundle as I can't override getKeyMethodMap() and throw an IOException:
[javac] D:\source\appfuse\src\web\org\apache\webapp\actions\BaseAction.java:107: getKeyMethodMap() in org.apache.web app.actions.BaseAction cannot override getKeyMethodMap() in org.apache.struts.actions.LookupDispatchAction; overridden m ethod does not throw java.io.IOException [javac] protected Map getKeyMethodMap() throws IOException [javac] ^ Thanks, Matt > -----Original Message----- > From: Erik Hatcher [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, December 18, 2002 8:56 AM > To: Struts Developers List > Subject: Re: LookupDispatchAction - loading values from a > properties file > > > I'm not sure where your .properties file lives, but you > should be able > to do something similar to this: > > Properties props = new Properties(); > InputStream is = this.getClass().getClassLoader().getResourceAsStream > ("my.properties"); > props.load(is); > return props; // since its just a Map also > > > > Matt Raible wrote: > > Pardon my ignorance, but your comment about Properties.load got me > > interested. However, I can't seem to figure out how to shorten my > > code (guess I haven't done much work with Properties > files). I found > > this > > example: > > > > http://www.javaworld.com/javaworld/javatips/jw-javatip125.html > > > > But it seems to just increase the number of lines ;-) > > > > Matt > > > > > >>-----Original Message----- > >>From: Erik Hatcher [mailto:[EMAIL PROTECTED]] > >>Sent: Wednesday, December 18, 2002 7:06 AM > >>To: Struts Developers List > >>Subject: Re: LookupDispatchAction - loading values from a > >>properties file > >> > >> > >>Matt, > >> > >>This looks reasonable. Generally speaking changing a button mapping > >>would involve new code, so a recompile is necessary, but as > >>you mention > >>you are mapping multiple buttons to the same method. > >> > >>Although I'd caution against using LookupDispatchAction unless you > >>really have forms that have multiple submit buttons to submit > >>that same > >>form data. If you're simply mapping multiple > >>non-form-related actions > >>into one class, then I'd argue this is not the right approach. > >> > >> Erik > >> > >>p.s. It looks like you might be able to save a few lines of code by > >>using the Properties.load method instead of going through a > >>ResourceBundle. ??? > >> > >>Matt Raible wrote: > >> > >>>I was thinking of loading a properties file for my > >> > >>KeyMethodMap in a > >> > >>>subclass of LookupDispatchAction. > >>> > >>>So this: > >>> > >>> * Provides the mapping from resource key to method name > >>> * > >>> * @return Resource key / method name map > >>> */ > >>> protected Map getKeyMethodMap() > >>> { > >>> Map map = new HashMap(); > >>> > >>> map.put("button.add", "add"); > >>> map.put("button.cancel", "cancel"); > >>> map.put("button.copy", "copy"); > >>> map.put("button.save", "save"); > >>> map.put("button.edit", "edit"); > >>> > >>> return map; > >>> } > >>> > >>>Could be replaced with the following psuedo code: > >>> > >>> protected Map getKeyMethodMap() > >>> { > >>> Map map = new HashMap(); > >>> ResourceBundle methods = > >>> ResourceBundle.getBundle("LookupMethods"); > >>> > >>> Enumeration keys = methods.getKeys(); > >>> > >>> while (keys.hasMoreElements()) { > >>> String key = (String) keys.nextElement(); > >>> map.put(key, methods.getString(key)); > >>> } > >>> > >>> return map; > >>> } > >>> > >>> > >>>Is there any reason(s) why I shouldn't do this? I think it allows > >>>greater flexibility for development - so I don't have to > re-compile > >>>this class everytime I want map a new method. My last > >> > >>project had 18 > >> > >>>different mappings for the the different button names - where many > >>>mapped to the same method. > >>> > >>>Thanks, > >>> > >>>Matt > >>> > >> > >> > >>-- > >>To unsubscribe, e-mail: > >><mailto:struts-dev-> [EMAIL PROTECTED]> > >>For > >>additional commands, > >>e-mail: <mailto:[EMAIL PROTECTED]> > >> > > > > > > > > -- > > To unsubscribe, e-mail: > <mailto:struts-dev-> [EMAIL PROTECTED]> > > For > additional commands, > e-mail: > > <mailto:[EMAIL PROTECTED]> > > > > > > > > > -- > To unsubscribe, e-mail: > <mailto:struts-dev-> [EMAIL PROTECTED]> > For > additional commands, > e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>