我正在CXF中创建基于JAX-RS的Web服务,我希望将RequestHandler
中传递给<jaxrs:provider>
的方法的参数传递给public class SampleRequestHandler implements RequestHandler {
@Override
public Response handleRequest(Message arg0, ClassResourceInfo arg1) {
OperationResourceInfo resourceInfo = arg0.getExchange().get(OperationResourceInfo.class);
String name = resourceInfo.getMethodToInvoke().getName();
return null;
}
}
。
我想要处理程序中的参数名称和相应的值,这是我的代码:
@Service("bookService")
@Path("/bookstore")
public class BookStore {
@POST
@Path("/books")
@Produces({ "application/xml" })
@Consumes({ "application/xml" })
public Book addBook(Book book) {
return book;
}
}
基于JAX-RS的服务:
beans.xml
和我<context:component-scan base-package="com.tutorial.cxf.jaxrs.service"/>
<bean id="sampleHandler" class="com.tutorial.cxf.jaxrs.interceptors.SampleRequestHandler"/>
<jaxrs:server id="restContainer" address="/">
<jaxrs:serviceBeans>
<ref bean="bookService"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="sampleHandler"/>
</jaxrs:providers>
</jaxrs:server>
我注册了处理程序和休息服务的地方:
{{1}}
有人已经管理过此案吗?
答案 0 :(得分:0)
尝试使用以下方法时遇到了同样的问题:
List<Parameter> params = ori.getParameters();
它只返回参数的名称(在方法中声明的名称),但不返回值。
官方watch a video只显示了一些内容,但正如所解释的那样,您始终可以获取邮件的QUERY_STRING值并进行解析。
您可以在处理程序/过滤器中执行以下操作:
String queryString = (String) arg0.get(Message.QUERY_STRING);
MultivaluedMap<String, String> queryMap = JAXRSUtils.getStructuredParams(queryString, "&", false, false);
并循环遍历queryMap集合。该映射将包含所有查询参数,甚至包含未在BookStore类的Rest方法中声明的参数。