Java Struts2-Rest控制器使用不同的模型类型进行模型驱动

Java Struts2-Rest控制器使用不同的模型类型进行模型驱动,java,rest,plugins,struts2,model-driven,Java,Rest,Plugins,Struts2,Model Driven,我正在编写一些Struts2 Rest控制器,似乎show()和view()方法将返回两种不同类型的模型。由于实现ModelDriven需要类型化,我一直将类型设置为。似乎有更好的方法可以做到这一点。这里有一些伪代码来演示我的问题 public class SomeController implements ModelDriven<Object> { Object model; public HttpHeaders show() { // retur

我正在编写一些Struts2 Rest控制器,似乎show()和view()方法将返回两种不同类型的模型。由于实现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;
    }
}
公共类SomeController实现模型驱动{
对象模型;
公共HttpHeaders show(){
//从index()列表中返回单个项
model=newsingleitem();
}
公共HttpHeaders索引(){
//返回所有项目的列表
模型=新列表();
}
公共对象getModel(){
收益模型;
}
}

请注意,建模有两种不同的类型,因此必须使用
ModelDriven

没有更好的方法;你还会做什么


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

我以这种方式使用它,我在互联网上的一些示例中也发现了这种情况。这主要是对你的方法的一个表面改变

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;
    }

}
公共类FoldersController实现模型驱动{
私有文件夹模型=新文件夹();
私人收藏清单;
公共HttpHeaders索引(){
list=fileService.getBaseFolders();
返回新的DefaultHttpHeaders(“索引”).disableCaching();
}
公共HttpHeaders show(){
model=fileService.getFolder();
返回新的DefaultHttpHeaders(“索引”).disableCaching();
}
@凌驾
公共对象getModel(){
返回(列表!=null?列表:模型);
}
公共void集合模型(文件夹模型){
this.model=模型;
}
}