Связыватель Spring webflow не привязывает объект коллекции - PullRequest
0 голосов
/ 11 декабря 2018

Я использую Spring Webflow v2.4.8 в своем приложении и пытаюсь связать свойства модели с помощью <binder></binder>.Но мои объекты коллекции (list1, list2 и ArrayList) никогда не привязываются.Если я полностью удалю <binder></binder>, все свойства будут правильно привязаны, но в моем случае это не вариант.

Нужно ли здесь использовать какой-то пользовательский конвертер?Любая помощь с благодарностью

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

1 Ответ

0 голосов
/ 13 декабря 2018

Это было давно, но в моем проекте у меня есть собственный ConversionService, так что, может быть, вы можете попробовать использовать такой как:

[EDIT]

Вот пример конвертераиспользуя сервис (который получает объект из БД)

@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());
    }
}

и добавьте его сюда

public class CustomDefaultConversionService extends DefaultConversionService {

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

, затем его необходимо зарегистрировать следующим образом (xml):

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

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

надеюсь, это поможет

...