我正在开发一个 Spring-MVC 应用程序,其中根据用户设置的模式,我必须返回 Object1 或 Object2 的列表。理想情况下,我可以创建两个 Controller 方法并适本地发送列表,但我想知道有什么方法可以在该 Controller 方法中发送任何类型的列表。
Controller 方法:
@PreAuthorize("hasRole('ROLE_USER')")
@RequestMapping(value = "/findnotebydays/{days}/{canvasid}/{mode}")
public @ResponseBody List<Inotes> findNotesByDays(@PathVariable("days")int days, @PathVariable("canvasid")int canvasid,
@PathVariable("mode")boolean mode ){
if(!mode){
return this.groupNotesService.findGroupNotesByDays(days,canvasid);
} else {
return this.notesService.findNotesByDays(days,canvasid);
}
}
基本上,如果 mode 为 false,我想返回 List<GroupNotes>
如果模式为 true,我想返回 List<Notes>
。我天真的方法,我以为我可以说它是一个对象并返回,但似乎不起作用。请让我知道我能做什么。多谢。 :-)
更新
GroupNotes 模型类:
@Entity
@Table(name="groupnotes")
public class GroupNotes implements Inotes{
@Id
@Column(name="mnoteid")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "mnote_gen")
@SequenceGenerator(name = "mnote_gen",sequenceName = "mnote_seq")
@org.hibernate.annotations.Index(name = "mnoticesidindex")
private int mnoticesid;
@Column(name = "mnotetext")
private String mnotetext;
//Other variables, getters, setters ignored
}
注释模型类:
@Entity
@Table(name="note")
public class Notes implements Inotes{
@Id
@Column(name="noteid")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "note_gen")
@SequenceGenerator(name = "note_gen",sequenceName = "note_seq")
@org.hibernate.annotations.Index(name = "noteidindex")
private int noticesid;
@Column(name = "notetext")
private String notetext;
//Other variables, getters, setters ignored
}
接口(interface)注释:
package com.journaldev.spring.model;
public interface Inotes {
}
最佳答案
遵循干净的编码风格,如果您必须将 boolean 值传递给一个方法,该方法实际上会做两件不同的事情,而您希望一个方法只做一件事情。
我只会做两个 Controller 操作,这对于用户和稍后的代码维护者来说更加清晰。
关于java - Spring ,Java : Passing Generic object List as return type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30868002/