我正在编写一些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>
。
答案 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;
}
}