2017-01-11 3 views
0

У меня есть проект, основанный на платформе Spring-model-view-controller (MVC). Версия платформы Spring-model-view-controller (MVC) - 3.2.8.RedirectAttributes in Spring MVC 3.2.8

У меня есть этот метод

@RequestMapping(value = {  "/newdesign/manage/device/award", 
            "/newdesign/manage/device/award/"}, method = {RequestMethod.POST}) 
    public String awardDeviceProduct(        
            @ModelAttribute("deviceForm") DeviceForm deviceForm,                
            HttpServletRequest request, 
            Model model, 
            final RedirectAttributes redirectAttributes) throws Exception { 

     checkUser (request, UserRole.MARKETING); 

     Device device = manageLicenseService.getDeviceById(deviceForm.getDevice().getId()); 


     if (deviceForm.getDevice().getIos()==null) { 

      model.addAttribute ("errorMessage", "Licence Number cannot be null !"); 

      redirectAttributes.addFlashAttribute("errorMessage", "Licence Number cannot be null !"); 

     } else if (deviceForm.getSelectedItems()!=null && 
       !deviceForm.getSelectedItems().isEmpty()) {  

      // check LICENCE DUPLICATED 

      manageLicenseService.applyStatusChange (device, deviceForm.getSelectedItems(), Status.AWARDED); 


     } else { 

      model.addAttribute ("errorMessage", "no Items selected !"); 
      model.addAttribute ("productGroup",  getNotExpiredProductGroups (request)); 

     } 


     return "redirect:/newdesign/manage/device/" + deviceForm.getDevice().getId(); 


    } 

Но в JSP я не могу найти атрибут "ErrorMessage" !!!! когда (deviceForm.getDevice(). getIos() == null)

ответ

0

Проблема с вашим кодом зависит от разницы между «перенаправлением» и «переходом».

Если вы вернетесь с оператором переадресации, ответ сначала вернется в браузер, а затем запросит новый URL-адрес. Проблема с этим подходом заключается в том, что перенаправленный новый запрос будет иметь совершенно новый контекст и не будет иметь доступа к Модели, установленной в вашем предыдущем ответе.

Перспективный ответ, однако, обрабатывается самой стороной сервера, передавая запрос новому URL-адресу. Это быстрее, и контекст может поддерживаться.

Дополнительную информацию можно найти здесь here

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