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

Reply via email to