@XmlRootElement(name="User")
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
private String userId;
private String userName;
// get set 方法省了
}
@XmlRootElement(name="Page")
@XmlAccessorType(XmlAccessType.FIELD)
public class Page {
/**
* 每页的展现条数
*/
private int pageSize = 20;
/**
* 总记录数
*/
private int totalCount;
/**
* 总页数
*/
private int totalPage;
/**
* 当前页数
*/
private int currentPage = 0;
/**
* 当前页起始记录
*/
private int startIndex = 0;
/**
* 查询结果集
*/
@XmlElementWrapper(name="items") // 在集合外包一层,名为items
@XmlElement(name="item") // 集合单个元素,名为item
private List items;
}
这是起初的做法,后台提示“...User 以及其任何超类对此上下文都是未知的”,意思是List中的元素无法转换;
后来继续查找,说是用到@XmlSeeAlso注解,改良为如下,该方案可行,可以转换为json或xml输出。
但是,弊端是,这个分页类就无法通用了,每增加一个类型的分页就要在XmlSeeAlso里增加一个。
- @XmlRootElement(name="PaginationSupport")
- @XmlAccessorType(XmlAccessType.FIELD)
- @XmlSeeAlso({User.class})
- public class PaginationSupport implements java.io.Serializable{
- 。。。
- }
@XmlRootElement(name="PaginationSupport")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({User.class})
public class PaginationSupport implements java.io.Serializable{
。。。
}
最后,增加泛型PaginationSupport<T>,也无济于事,不能转换。
请大家帮看看,到底CXF rest的分页如何实现。