我已按照此链接构建了CXF Restful webservices url link。
如果我的网址如下所示:
http://localhost:8080/CxfRestService/rest/employeeservices/getemployeedetail?employeeId=1&empProfession=software
这里,“empProfession”参数对我来说是可选的。
所以,尽管如果我省略了该参数并点击了下面的url,我应该得到所需的响应。 http://localhost:8080/CxfRestService/rest/employeeservices/getemployeedetail?employeeId=1
任何人都可以帮我解决如何在CXF Restful webservices中使用可选参数的问题。
答案 0 :(得分:2)
选项1 - 声明参数并检查是否!= null
public Response getEmployeeDetail(@QueryParam("employeeId") String employeeId, @QueryParam("empProfession") String empProfession);
选项2 - 声明en对象以接收所有已知参数
public Response getEmployeeDetail(@QueryParam("") EmployeeFilter filter) ;
public class EmployeeFilter {
public void setEmployeeId(String id) {...}
public void setEmpProfession(String p) {...}
}
选项3 - 不要声明参数并解析URI。如果您可以接受非固定参数
,此选项可能很有用 public Response getEmployeeDetail( @Context UriInfo uriInfo) {
MultivaluedMap<String, String> params = uriInfo.getQueryParameters();
String employeeId = params.getFirst("employeeId");
String empProfession = params.getFirst("empProfession");
答案 1 :(得分:0)
实际上,CXF中的所有参数都不是强制性的,您无法使用@QueryParam更改它(因为您可以使用@RequestParam(required = false)与Spring-REST进行比较)。
解决方案是添加@NotNull javax.validation注释以指示参数是必需的。
这样,您可以使用
有关使用javax.validation注释的更多信息,请参阅CXF3 ValidationFeature:https://cwiki.apache.org/confluence/display/CXF20DOC/ValidationFeature
有关CXF3 Swagger功能的更多信息,请访问:http://cxf.apache.org/docs/swagger2feature.html)。
这个答案是相关的:Required @QueryParam in JAX-RS (and what to do in their absence)