2013-04-11 7 views
0

Я столкнулся с проблемой с калитки моделей и списков. Скажем, у меня есть фасоль, как это:Получить вложенную модель элемента списка в модели

public class A{ 
    private B title; 
    private ArrayList<C> childs; 
    ...get/set...; 
} 

создать модель из него new Model<A>(a), и я хочу, чтобы получить вложенные модели из его атрибутов. Для B это просто: new PropertyModel(a,"title").

Но как я могу получить вложенную модель для каждого ребенка C? (Модель типа IModel<C>)

Спасибо.

+0

Там нет прямого пути с PropertyModels. Вам нужно будет создать оболочку, которая создает список IModel s на основе вашего списка. – Nicktar

+0

Вот что я подумал, но я не специалист по калитке, и я не вижу, как его создать и держать модели вложенными. – wishper

+0

Не могли бы вы объяснить, что именно вы подразумеваете под «вложенными», что вы хотите архивировать с помощью вложенной модели и где вы хотите ее использовать? Существуют различные решения для разных случаев использования, и я не знаю, какие из них будут соответствовать вашим потребностям. – Nicktar

ответ

0

Вам понадобится Wrapper, который делегирует большую часть вашей работы фактическому bean-компоненту, но обертывает возвращаемые значения в IModels.

Это может выглядеть примерно так:

public class ModelWrapper implements IModel<A> { 

    private A data; 

    public ModelWrapper(A data) { 
     this.data = data; 
    } 

    public IModel<B> getTitle() { 
     return new Model(data.getTitle()); 
    } 

    public List<IModel<C>> getChilds() { 
     return new List<IModel<C>>() { 

      @Override 
      public int size() { 
       return data.getChilds().size(); 
      } 


      @Override 
      public IModel<C> get(int index) { 
       return new IModel<C>(data.getChilds().get(index)); 
      } 

      ... 

     }; 
    } 
} 
Смежные вопросы