ViewOfObject常见的运用是在:
在网页的显示层中一个显示单元,可能由多个类的属性组成,这里采用ViewOfObject(map<String,Object>)
:把这些类用Object的map容器封装成一起。这里的Object,可以接受多中类型。
这里运用到了父类声明可以接受子类的对象–即多态
下面示例中vo是一个map,显示单元。vos是多个显示单元的list的集合。
其中vo={“user”=user,”question”=question}. vos=[vo1,vo2,vo3,vo4];
以下为示例代码:
1、对象的定义:
public class ViewOfObject {
HashMap<String,Object> vos=new HashMap<>();
public void set(String key,Object object){
vos.put(key,object);
}
public Object get(String key){
return vos.get(key);
}
}
2、对象的使用:
//第一个主页
@RequestMapping("/home")
public String home(Model model){
List<Question> qlist= questionService.getLatestQuestion(0,0,10);
//直接用vo的数组;本身VO类是一个map
ArrayList<ViewOfObject> vos =new ArrayList<>();
for (Question question:qlist){
ViewOfObject vo=new ViewOfObject();
//在这里question是由questionService获取list然后遍历得到;
//而对应的question的user由question.getUerID得到
//得到userId之后根据UserService中的getUser可以得到user
vo.set("question",question);
vo.set("user",userService.getUser(question.getUserId()));
vos.add(vo);
}
model.addAttribute("vos",vos);
return "home";
}