2013-06-04 29 views
0

我正在寫幾個Struts2休息控制器,看起來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; 
    } 

}