2013-06-04 3 views
0

Я пишу несколько контроллеров Restuts2 Rest, и кажется, что метод show() и view() будет возвращать два разных типа моделей. Поскольку для ввода ModelDriven необходимо ввести тип, я устанавливаю тип <Object>. Кажется, есть лучший способ сделать это. Вот несколько псевдокодов, чтобы продемонстрировать мою проблему.Struts2 - контроллеры отдыха ModelDriven с различными типами моделей

public class SomeController implements ModelDriven<Object> { 
    Object model; 

    public HttpHeaders show() { 
     // return a single item from the index() list 
     model = new SingleItem(); 
    } 

    public HttpHeaders index() { 
     // return a list of all items 
     model = new List<SingleItem>(); 
    } 

    public Object getModel() { 
     return model; 
    } 
} 

Обратите внимание, что существует два различных типа в модели, и поэтому ModelDriven<Object> должны быть использованы.

ответ

0

Нет лучшего способа сделать это; что еще вы бы сделали?

Предположим, вы могли бы создать модельный Pair или один/составной составной список и использовать соответствующее значение в ваших результатах, но я не уверен, что вы многого выиграете, сделав это.

0

Я использую его таким образом, который я также нашел в нескольких примерах в Интернете. Это в основном косметическое изменение вашего подхода.

public class FoldersController implements ModelDriven<Object>{ 
    private Folder model = new Folder(); 
    private Collection<JSONFolder> list; 

    public HttpHeaders index() { 
     list = fileService.getBaseFolders(); 
     return new DefaultHttpHeaders("index").disableCaching(); 
    } 

    public HttpHeaders show() { 
     model = fileService.getFolder(); 
     return new DefaultHttpHeaders("index").disableCaching(); 
    } 

    @Override 
    public Object getModel() { 
     return (list != null ? list : model); 
    } 
    public void setModel(Folder model) { 
     this.model = model; 
    } 

} 

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

  • Нет связанных вопросов^_^