SEVERE: Servlet.service () для сервлета [ProfileServlet] в контексте с путем [/ Homework] выдало исключение java .lang.NumberFormatException: null - PullRequest
1 голос
/ 06 марта 2020

Я получаю это исключение, и я понятия не имею, почему. Он говорит, что его исключение числового формата является нулевым. Я посмотрел другие посты по этому поводу, но ни один из них не решает мою проблему. Мой класс профиля - это простой класс с идентификатором username фамилия age и favTeam с сеттерами и геттерами и конструктором. Кто-нибудь знает, почему это происходит?

Мой сервлет

public ProfileServlet() {
    super();
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
HashMap<Integer, Profile> team = new HashMap<Integer, Profile>();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    response.setContentType("application/json; charset=UTF-8");
    //String requestUrl = request.getRequestURI();
    PrintWriter out = response.getWriter(); 

    Profile test = new Profile();
    int id;

    test = team.get(id = Integer.parseInt(request.getParameter("ID")));

    if(test != null)
    {
        out.println("ID: " + test.getId());
        out.println("name: " + test.getUsername());
        out.println("lastname: " + test.getLastname());
        out.println("age: " + test.getAge());
        out.println("favTeam: " + test.getFavTeam());
    }
    else
    {
        //ERROR

    }
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    String id = request.getParameter("id");
    String age  = request.getParameter("id");

    int x = 0;
    if(id!=null){
      try{
        x = Integer.parseInt(id);
       }catch(Exception e){
       }

    }

    String username = request.getParameter("username");
    String lastname = request.getParameter("lastname");
    String favTeam = request.getParameter("favTeam");

    int numage = 0;
    if(id!=null){
      try{
        numage = Integer.parseInt(age);
       }catch(Exception e){
       }

    }

    Profile profile = new Profile(x,username,lastname,favTeam,numage);

    team.put(profile.getId(),profile);

}

}

Мой. xml

 <display-name>Homework</display-name>

  <servlet>
    <servlet-name>ProfileServlet</servlet-name>
    <servlet-class>ntrut.ProfileServlet</servlet-class>
  </servlet>

  <servlet-mapping>
      <servlet-name>ProfileServlet</servlet-name>
      <url-pattern>/profile</url-pattern>
  </servlet-mapping>

  </web-app>

Ответы [ 2 ]

1 голос
/ 06 марта 2020

В нижней строке появляется ошибка.

Integer.parseInt(request.getParameter("ID"))

Убедитесь, что значение, возвращаемое из request.getParameter("ID"), является числом,

Можете ли вы попытаться вывести значение request.getParameter("ID") перед этой строкой ? вы увидите, что это не числовое значение.

0 голосов
/ 06 марта 2020

Что я сделал, чтобы исправить свою проблему, это то, что я сделал в моем doPost. Я должен был сделать то же самое в моем doGet с request.getParameter

 String id = request.getParameter("id");

    int x = 0;
    if(id!=null){
      try{
        x = Integer.parseInt(id);
       }catch(Exception e){
       }

    }

    test = team.get(x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...