you should do convertToObject() call in a try block, catch any exception and throw a conversionexception
-igor On Fri, Dec 4, 2009 at 11:32 AM, Sam Barrow <[email protected]> wrote: > > 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: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
