首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Apache Wink 中使用 Dojo Grid 和 Dojo Tree 小部件(5)

在 Apache Wink 中使用 Dojo Grid 和 Dojo Tree 小部件(5)

创建 Wink 注解类 将含 Wink 注解的类称为 Action 类。每个类都有将获取关于一个资源的信息的所有方法。所有必须实现的 REST 调用在该类中定义。该类的每个方法的调用都是用一个 @Path 注解标注的。Action 类将处理所有 HTTP 请求。清单 20 显示了 EmployeeAction 类的一个代码片段。
清单 20. 样例 EmployeeAction 类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@Path(value = "/employee")
public class EmployeeAction {

@GET
@Path("/list")
@Produces(value ={"application/json_grid"})
public Response getEmployeeDojoList(){
DojoList<Employee> employeeDojoList = new DojoList<Employee>();

/* can create any number of employees; here creating two employees and
adding to Dojo list  */

Employee manager = new Employee();
manager.setId("001");
manager.setName("Manager");
manager.setManager(true);
manager.setSex("male");
manager.setAge("35");
employeeDojoList.getItems().add(manager);

return Response.ok(employeeDojoList).build();
    }
     
@GET
@Path("/tree")
@Produces(value ={"application/json_dojo_tree"})
public Response getEmployeeDojoTree(){
DojoTree<EmployeeView> employeeDojoList = new DojoTree<EmployeeView>();

//can create any number of employees;
// here creating two employees and adding to Dojo list  
     
EmployeeView manager = new EmployeeView();
manager.setId("001");
manager.setName("Manager");
manager.setManager(true);
manager.setSex("male");
manager.setAge("35");
         
EmployeeView developer1 = new EmployeeView();
developer1.setId("002");
developer1.setName("John");
developer1.setManager(false);
developer1.setSex("M");
developer1.setAge("25");
         
EmployeeView developer2 = new EmployeeView();
developer2.setId("002");
developer2.setName("Alice");
developer2.setManager(false);
developer2.setSex("F");
developer2.setAge("21");
         
Set<EmployeeView> employeeSet = new HashSet<EmployeeView>();
employeeSet.add(developer1);
employeeSet.add(developer2);
manager.setChildrenRepresentation(employeeSet);
//making developer as child of manager
         
employeeDojoList.getItems().add(manager);
employeeDojoList.getItems().add(developer1);
employeeDojoList.getItems().add(developer2);
return Response.ok(employeeDojoList).build();
    }

}




当使用 /employee/list 值调用一个 URI 时,接受的头部是 application/json_grid,然后 getEmployeeList() 被触发并返回一个 DojoGrid 格式的响应。
要在 Dojo Tree 格式中查看员工信息,有一个独立的 URI /employee/tree,含有接受头部 application/json_dojo_tree。Wink REST Servlet 调用 EmployeeAction 的 getEmployeeDojoTree 方法,返回一个 DojoTree 格式的响应。

Object Factory JAXB 技术要求类上下文要向 XML 反编组/编组程序公开。要做到这一点,您必须实现一个 ObjectFactory 类,这个类将充当工厂的角色,创建不同资源对象。在 清单 20 的示例中,有 4 个资源类:Employee、EmployeeView、               DojoList 和 DojoTree。清单 21 展示了如何通过创建该方法将这个实例公布到 JAXB 上下文。
清单 21. 样例 ObjectFactory 类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@XmlRegistry
public class ObjectFactory {

public DojoList createDojoList() {
return new DojoList();
}

public DojoTree createDojoTree() {
return new DojoTree();
}

public Employee createEmployee(){
return new Employee();
}
public EmployeeView createEmployeeView(){
return new EmployeeView();
}

返回列表