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

在 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();
}
|
|
|
|
|
|
|