This indeed solves the trick. I'm not sure this is a bug, since the
propertyresolver is a general system and Hashtable is just an exception to
normal javabean rules.



On Fri, Oct 18, 2013 at 2:01 PM, Marios Skounakis <msc...@gmail.com> wrote:

> An idea is to wrap the Properties object in a class of your own
> implementing Map as follows:
>
> class MyProps implements Map<String, String> {
>   Properties props;
>
>   public void put(String key, String value) {
>     if (value == null) props.remove(key);
>     else props.put(key, value);
> }
>
> This does sound like a bug in PropertyResolver as it should probably test
> whether the Map is a Hashtable and call remove() since Hashtable is
> documented to throw an NPE when put() is called with a null value.
>
>
>
> On Fri, Oct 18, 2013 at 1:55 PM, Andy Van Den Heuvel <
> andy.vandenheu...@gmail.com> wrote:
>
> > Hey,
> >
> > I'm trying to create a form with a CompoundPropertyModel to fill a
> > java.util.Properties object dynamically.
> >
> > Form<Properties> form = new Form<>("form", new
> > CompoundPropertyModel<>(properties));
> > form.add(new TextField<String>("host"));
> > form.add(new TextField<String>("port"));
> >
> > This works correct when I start from an empty java.util.Properties
> object.
> > If I have an existing java.util.Properties object (with filled data)
> > and I remove the value in the html page, I want the key-value pair to be
> > deleted from the Properties object.
> >
> > With my current implementation I get a stacktrace (because it tries to
> > write a null value in the java.util.Properties object)
> >
> > java.lang.NullPointerException
> >      at java.util.Hashtable.put(Hashtable.java:432)
> >      at
> >
> >
> org.apache.wicket.core.util.lang.PropertyResolver$MapGetSet.setValue(PropertyResolver.java:803)
> >      at
> >
> >
> org.apache.wicket.core.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:644)
> >      at
> >
> >
> org.apache.wicket.core.util.lang.PropertyResolver.setValue(PropertyResolver.java:144)
> >
> >
> > Has anybody have an idea how best to create this behaviour?
> > Thanks in advance for your help!
> >
>

Reply via email to