我正在尝试的代码显示Null指针异常,因为它没有从路径中提取参数值,我不知道为什么?如果有人可以帮我解决这个问题?
从pathparam中提取的路径值,即名称被提取为null,为什么会发生这种情况,请不要随便帮我解决。
我根本不知道问题实际上是我尝试过的,我只得到名称的参数值没有在路径参数中提取,我检查了不同的网站仍然无法得到解决方案。我希望在这里发帖可以帮助我找到解决方案
我的资源类是:
package resource;
import javax.websocket.server.PathParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import dao.CustomerDao;
import dao.CustomerDaoImpl;
import entity.Customer;
@Path("/customer")
public class CustomerResource {
CustomerDaoImpl dao = new CustomerDaoImpl();
@GET
@Path("/greet")
public String greet(){
return("Hello World");
}
@GET
@Path("/{name}")
public String getCustomerByName(@PathParam("name") String name){
System.out.println("the name is : "+name);
return dao.getCustomerByName(name).toString();
}
}
,服务等级如下:
package dao;
import java.util.ArrayList;
import java.util.List;
import entity.Customer;
public class CustomerDaoImpl implements CustomerDao {
static private List<Customer> customerList = new ArrayList<Customer>();
static {
customerList.add(new Customer("John",101,"7757945607"));
customerList.add(new Customer("Joe", 102,"8857833518"));
customerList.add(new Customer("James",103,"8177998482"));
customerList.add(new Customer("Roy",104,"8149038984"));
customerList.add(new Customer("Dev",105,"9503257180"));
}
@Override
public Customer getCustomerByName(String name) {
for (Customer c : customerList) {
if (c.getCustomerName().equalsIgnoreCase(name)) {
return c;
}
}
return null;
}
}
虽然我使用正确的路径
http://localhost:8080/CustomerWebApp/rest/customer/Roy
答案 0 :(得分:3)
您使用的是错误的PathParam
。您应该使用javax.ws.rs.PathParam
。
答案 1 :(得分:1)
是必须使用jar-rs规范提供的PathParam。 你使用了错误的一个javax.websocket.server.PathParam; 有关如何使用@PathParam和@path注释的详细信息,请参阅:http://entityclass.in/rest/jaxRsAnnotationPath.htm