2017-01-11 1 views
0

Ich habe ein Projekt im Spring Web Modell-View-Controller (MVC) Framework. Die Version des Spring Web Model-View-Controller (MVC) -Frameworks ist 3.2.8.RedirectAttributes im Frühjahr MVC 3.2.8

Ich habe diese Methode

@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(); 


    } 

Aber in der JSP kann ich nicht das Attribut "errormessage" finden !!!! when (deviceForm.getDevice(). getIos() == null)

Antwort

0

Das Problem mit Ihrem Code beruht auf dem Unterschied zwischen "Redirect" und "Forward".

Wenn Sie mit einer Redirect-Anweisung zurückkehren, wird die Antwort zuerst an den Browser zurückgegeben und dann wird die neue URL angefordert. Das Problem bei diesem Ansatz besteht darin, dass die umgeleitete neue Anfrage einen völlig neuen Kontext hat und keinen Zugriff auf das Modell hat, das in Ihrer vorherigen Antwort festgelegt wurde.

Die Weiterleitungsantwort wird jedoch von der Serverseite selbst verarbeitet und überträgt die Anforderung an die neue URL. Es ist schneller und der Kontext kann beibehalten werden.

Weiterführende Informationen finden Sie unter here