slashron
slashron

Reputation: 307

Spring webflow binder not binding collection object

I'm using spring webflow v2.4.8 in my app, and trying to bind the model properties using <binder></binder>. But my collection objects (list1, list2 both ArrayList) never get bound. If I remove the <binder></binder> altogether, all properties are getting correctly bound, but in my case that is not an option.

Do I need to use some custom converter here? Any help greatly appreciated

 <view-state id="myId" model="myModel" view="myView" >
        <binder>
            <binding property="list1"/>
            <binding property="list2"/>
            <binding property="string1"/>
            <binding property="string2"/>
            .
            .
            .
        </binder>
        .
        .
        .
    </view-state>

Upvotes: 0

Views: 413

Answers (1)

rptmat57
rptmat57

Reputation: 3787

It's been a while, but in my project I have a custom ConversionService, so maybe you can try using one like this:

[EDIT]

Here is an example of a converter using a service (that gets the object from the db)

@Named
public class StringToMyType extends StringToObject {

    @Inject
    private MyTypeService service;

    public StringToMyType(MyType myObject) {
        super(myObject);
    }

    @Override
    protected Object toObject(String id, Class<?> targetClass) throws Exception {
        if (id != null && id.length != 0) {
            return service.findById(new Long(id));
        } else return null;
    }

    @Override
    protected String toString(Object myObject) throws Exception {
        return Objects.toString(((MyType) myObject).getId());
    }
}

and add it here

public class CustomDefaultConversionService extends DefaultConversionService {

    @Override
    protected void addDefaultConverters() {
        super.addDefaultConverters();
        addConverter(new MyTypeConverter()
        addConverter(new ObjectToCollection(this));
    }
}

it needs to then be registered this way (xml):

<webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" conversion-service="conversionService"/>

<bean id="conversionService" class="path.to.converter.CustomDefaultConversionService"/> 

hope this helps

Upvotes: 0

Related Questions