2014-01-28 3 views
0

У меня есть метод контроллера:контроллер метод/браузер не распознает @RequestParam

@RequestMapping(value = "/editComment/{id}", method = RequestMethod.GET) 
public ModelAndView showOfficeComment(@RequestParam(value="id", required = false) Long id) { 
     Office office;   
     office = officeServiceImpl.find(id); 
     ModelAndView result = new ModelAndView("editComment", "command", office); 
     return result; 
    } 

Когда я поместить адрес в браузере с идентификатором в конце (... editComment/100), я получаю следующее сообщение об ошибке:

java.lang.IllegalArgumentException: id to load is required for loading 

у меня есть следующий метод, который работает отлично:

@RequestMapping(value = "/officeForm/{id}", method=RequestMethod.GET) 
public ModelAndView showOfficeForm(@RequestParam(value="id", required = false) Long id) { 
     Office office; 
     if (id == null) {office = new Office();} 
     else {office = officeServiceImpl.find(id);} 
     office.setDepartments(new ArrayList<Department>()); 
     List<Department> departments = departmentServiceImpl.findAll(); 

     ModelAndView result = new ModelAndView("officeForm", "command", office); 
     result.addObject("departments", departments); 
     return result; 
    } 

Может кто-нибудь объяснить, что га здесь? Благодарю.

ответ

0

Вы должны использовать @PathVariable вместо @RequestParam, как описано here.

+0

Тогда я получаю «org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.IllegalStateException: ни BindingResult, ни обычный целевой объект для bean name 'command', доступный как запрос атрибут « –

+0

« OfficeServiceImpl.find (100) «что-то возвращает? – david

+0

Да. Я работал, возможно, из-за того, что моя БД пуста, но я не уверен. Все, что я сделал, это добавить параметр HttpServletRequest и связать с ним атрибут. Кажется, не связано с моей проблемой. –

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