我想实现用一个简单的REST服务FIQL但我的代码抛出NullPointerException在哪里注入点SearchContext用@Context.这是我的代码
我的服务类:
import java.util.*;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
import org.apache.cxf.jaxrs.ext.search.SearchContext;
@Path("/search")
public class Books {
private List<Book> theBooks = new LinkedList<Book>();
@Path("/book")
@GET
@Produces(MediaType.APPLICATION_XML)
public List<Book> getBook(@Context SearchContext searchContext) {
theBooks.add(new Book("1", "nick1"));
theBooks.add(new Book("2", "nick2"));
theBooks.add(new Book("3", "nick3"));
theBooks.add(new Book("4", "nick4"));
theBooks.add(new Book("5", "nick5"));
SearchCondition<Book> condition = searchContext
.getCondition(Book.class);
return condition.findAll(theBooks);
}
}
Run Code Online (Sandbox Code Playgroud)
我的书课
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Book {
private String id;
private String author;
public Book(){ }
public Book(String id, String ownerinfo) {
this.id = id;
this.author = ownerinfo;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getOwnerinfo() {
return author;
}
public void setOwnerinfo(String ownerinfo) {
this.author = ownerinfo;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用maven,我使用了依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-search</artifactId>
<version>2.7.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
根据这个CXF-4949,我的代码(我相信)应该可以工作,但是我仍然searchContext是空的@Context
有任何想法吗?
谢谢
我设法解决了这个问题.我错过SearchContextProvider了beans.xml文件中的声明.我刚加了这条线
<bean class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
Run Code Online (Sandbox Code Playgroud)
在<jaxrs:providers>标签中,现在它工作正常.
更多关于FIQL的信息
谢谢
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |