Hari Haran wrote:

Hi,

In recent past I have been working with struts Map-backed Action Form.
It can accept any number of HTML form parameters without declaring
each field as accessors or in an external XML file.

This seems to be a good approach , as I don't need to create a new
ActionForm for my data entry screens any more.

I would like to know groups experience with Map-backed Action Forms.

1. can we consider this option for production grade code.
2.  Does it have any hidden performance overhead.


-Hari Haran

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






This is a pretty well-worn area, Hari. If you would like to make the whole deal safe, and are using Struts 1.2, you might try http://wiki.apache.org/struts/StrutsCatalogInstrumentableForms , or:

public class BeanMapForm extends ActionForm implements Map {
private Map map;


 public BeanMapForm() {
   int size = 89;
   this.map = Collections.synchronizedMap(new HashMap(size));
 }

 public void setMap(Map map) {
   this.map = map;
 }

 public Map getMap() {
   return map;
 }

 public void setProperty(Object key, Object value) {
   map.put(key,value);
 }

 public Object getProperty(Object key) {
   return map.get(key);
 }

 public void       clear()                       { map.clear(); }
 public boolean    containsKey(Object key)       { return map.containsKey(key);}
 public boolean    containsValue(Object value)   { return map.containsValue(value); }
 public Set        entrySet()                    { return map.entrySet(); }
 public boolean    equals(Object object)         { return map.equals(object); }
 public Object     get(Object key)               { return map.get(key); }
 public int        hashCode()                    { return map.hashCode(); }
 public boolean    isEmpty()                     { return map.isEmpty(); }
 public Set        keySet()                      { return map.keySet(); }
 public Object     put(Object key, Object value) { return map.put(key,value); }
 public void       putAll(Map map)               { map.putAll(map); }
 public Object     remove(Object key)            { return map.remove(key); }
 public int        size()                        { return map.size(); }
 public Collection values()                      { return map.values(); }
 public String     toString()                    { return "BeanMapForm[" + map.toString() + 
"]"; }

Michael McGrady
} ///;-)


See Joshua Bloch's _Effective Java_, Item 14 (favoring composition over inheritance) for good reasons to approach things this way. This won't work with lower than 1.2 due to a need to have the commons utils distinguish between a regular map and an ActionForm map.


Michael McGrady


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



Reply via email to