Struts2 - Rest控制器ModelDriven具有不同的模型类型

时间:2013-06-04 13:57:27

标签: java rest plugins struts2 model-driven

我正在编写一些Struts2 Rest控制器,看起来show()和view()方法将返回两种不同类型的模型。由于需要输入ModelDriven,我一直将类型设置为<Object>。似乎有更好的方法来做到这一点。这里有一些伪代码来演示我的问题。

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>

2 个答案:

答案 0 :(得分:0)

没有更好的方法来做到这一点;你还能做什么?

我想你可以创建一个特定于模型的Pair或单个/列表复合,并在结果中使用适当的值/字段,但我不确定你这样做会获得多少收益。

答案 1 :(得分: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;
    }

}