空指针在尝试简单的休息应用程序时从路径获取参数值时出现异常

时间:2015-11-28 06:56:41

标签: rest jax-rs

我正在尝试的代码显示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

2 个答案:

答案 0 :(得分:3)

您使用的是错误的PathParam。您应该使用javax.ws.rs.PathParam

答案 1 :(得分:1)

是必须使用jar-rs规范提供的PathParam。 你使用了错误的一个javax.websocket.server.PathParam; 有关如何使用@PathParam和@path注释的详细信息,请参阅:http://entityclass.in/rest/jaxRsAnnotationPath.htm