Java Struts2-Rest控制器使用不同的模型类型进行模型驱动
我正在编写一些Struts2 Rest控制器,似乎show()和view()方法将返回两种不同类型的模型。由于实现ModelDriven需要类型化,我一直将类型设置为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
。似乎有更好的方法可以做到这一点。这里有一些伪代码来演示我的问题
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=模型;
}
}