2014-10-13 2 views
0

Я получаю NumberFormatException в своем коде. Может ли кто-нибудь предложить мне, как это преодолеть? Я пытаюсь добавить запрос на основе идентификатора клиента. Идентификатор клиента - это столбец объединения в таблице запросов. Когда я нажимаю ссылку добавить запрос, я должен получить конкретный идентификатор автоматически.Как исправить NumberFormatException в моем контроллере?

@InitBinder 
public void initBinder1(WebDataBinder binder) { 
    binder.registerCustomEditor(Customer.class,"customer", new PropertyEditorSupport() { 
     @Override 
     public void setAsText(String customer) { 
      setValue(new Customer(Integer.parseInt(customer))); 
     } 
    }); 
} 

@RequestMapping(value="/addQuery.htm", method=RequestMethod.GET) 
public ModelAndView reportForm1(ModelMap model,HttpServletRequest request) { 
    int id=Integer.parseInt(request.getParameter("id")); 
    System.out.println(id); 

    Queries query = new Queries(); 
    Customer customer = new Customer(id); 

    query.setCustomer(customer); 
    model.addAttribute("queries", query); 
    ModelAndView mav = new ModelAndView("addQuery"); 

    return mav; 

} 

Вот ошибка я получаю:

Oct 14, 2014 12:25:32 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path  
[/CustomerPortal] threw exception [Request processing failed; nested exception is  
java.lang.NumberFormatException: null] with root cause 
java.lang.NumberFormatException: null 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at com.axiscapstone.customer.web.CustomerController.reportForm1(CustomerController.java:86) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
+1

Вы должны зарегистрировать 'request.getParameter (« id »)' и проверить, имеет ли он значение null перед его разбором. Вы также можете использовать отладчик для управления этим. –

+0

Благодарим вас за ответ. но я новичок в Spring. так что вы можете показать, как вести журнал – user3599302

+0

Это не имеет ничего общего с весной. когда вы пытаетесь проанализировать нуль, используя parseInt(), вы получите исключение нулевого указателя. – DwB

ответ

0

Не делайте это преобразование самостоятельно. Пусть весна это делает:

@RequestMapping(value="/addQuery.htm", method=RequestMethod.GET) 
public ModelAndView reportForm1(@RequestParam Integer id, ModelMap model) { 
    System.out.println(id); 
    ... 

Но id имеет тип Integer, который может, конечно, быть нулевым. Вы можете заставить клиента указать этот параметр URL-адреса, используя @RequestParam(required = true)

+0

Итак, не пишу @RequestParam Integer id .... я должен заменить на это @RequestParam (required = true)? – user3599302

+0

@ user3599302 yes. Эффект будет заключаться в том, что клиент получает некоторую ошибку, когда id будет отсутствовать – luboskrnac

+0

, добавив, что, поскольку я предположил, что получил ошибку как HTTP Status 400 - Требуемый параметр Integer 'id' нет тип – user3599302

Смежные вопросы