I am trying to make a TextArea that allows you to input a list of
strings (separated by a newline) and turns that list into a Collection.
I had it working but it was kind of hacked together, I'm trying to do it
the clean way now.
I have it working except for two things:

If I give it an empty collection for the model object then it display
square brackets [] inside the text area.
I don't have the conversion 100% working. Like when you have a
TextField<Date>, I'm trying to make it do the same thing to each line.
It works, but when it is an invalid value, instead of a nice error
message "X is not a valid Y" I get a runtime exception from whatever
IConverter I am using.

Source:

public final class CollectionTextArea<Type> extends
TextArea<Collection<Type>> {

        private static final long serialVersionUID = 7147538499297387635L;

        private Class<?> elementType;

        public CollectionTextArea(final String id, final Class<?> elementType)
{
                super(id);
                setElementType(elementType);
        }
        public CollectionTextArea(final String id, final Class<?> elementType,
final IModel<Collection<Type>> model) {
                super(id, model);
                setElementType(elementType);
        }

        public Class<?> getElementType() {
                return elementType;
        }
        public void setElementType(Class<?> elementType) {
                this.elementType = elementType;
        }

        @Override
        protected void onBeforeRender() {
                super.onBeforeRender();
        }
        @Override
        @SuppressWarnings("unchecked")
        protected void convertInput() {
                final String text = getRawInput();
                final List<Type> lines = new ArrayList<Type>();
                if (text != null) {
                        for (final String line: text.split("\\r\\n")) {
                                if (StringUtils.isNotBlank(line)) {
                                        Type value = (Type)
getApplication().getConverterLocator().getConverter(getElementType()).convertToObject(line,
 getLocale());
                                        lines.add(value);
                                }
                        }
                }
                setConvertedInput(lines);
        }

}




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to