2017-03-06 110 views
0

我的控制器类春天@SessionAttributes不工作

@Controller 
@SessionAttributes("basschoolsform") 
public class SchoolStudentsConfirmationContrl 
{ 

以下方法接受ac_year并相应地获取数据,并重定向到页面showreport

@RequestMapping(value="/SchoolStudentConfirmation.getData",method=RequestMethod.GET) 
     public ModelAndView BASyearWiseReport(@ModelAttribute BASSchoolsForm basschoolsform,HttpServletRequest request) 
     { 
      ModelAndView mav=new ModelAndView(); 
      try 
      { 
      List<Object[]> result=schoolstdconfirmservice.BASyearWiseReport(request,basschoolsform);   
      PageHeading = "BAS Students Confirmation for the Academic Year:"+ basschoolsform.getAc_year() 
      if(!result.isEmpty()) 
      { 
       mav.addObject("result",result); 

      } 
      else 
      { 
       mav.addObject("msg","NO Data Found"); 
      } 
      mav.setViewName("showreportwithmenu"); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
      mav.addObject("basschoolsform",basschoolsform); 
      return mav; 
     } 

此方法还使用ac_year和获取数据并重定向到studentstatusedit

@RequestMapping(value="/SchoolStudentConfirmation.ConfirmStudentByDO",method=RequestMethod.GET) 
    public ModelAndView ConfirmStudentByDO(@ModelAttribute BASSchoolsForm basschoolsform,HttpServletRequest request) 
    { 
     ModelAndView mav=new ModelAndView(); 
     System.out.println(basschoolsform.getAc_year()+" later value"); 
     List<BASSchoolsForm> studentdata=schoolstdconfirmservice.ConfirmStudentByDO(basschoolsform,request);  
     if(studentdata != null && studentdata.size() > 0) 
     { 
      mav.addObject("PageHeading","Academic Year:"+request.getParameter("ac_year")+" School: "+request.getParameter("school")); 
      mav.addObject("studentdata",studentdata); 
      mav.addObject("schooltype",request.getParameter("school").split("-")[2]); 
         request.setAttribute("school",request.getParameter("school")); 
     } 
     else 
     { 
      mav.addObject("msg","All Applications are Confirmed"); 
      mav.addObject("showyear","showyear"); 
     } 
     mav.setViewName("studentstatusedit"); 
     return mav; 
    } 

虽然我添加了sessionAttribute,但是我得到了ac_year在下一个方法中为null。 请告诉我在哪里,我是在错误的

回答

0

首先,你需要初始化的ModelAttribute和方法参数

@Controller 
@SessionAttributes("basschoolsform") 
public class SchoolStudentsConfirmationContrl 
{ 
    @ModelAttribute("basschoolsform") 
    public BASSchoolsForm populate(){ 
     return new BASSchoolsForm(); 
    } 
    ................ 

public ModelAndView ConfirmStudentByDO(@ModelAttribute("basschoolsform") BASSchoolsForm basschoolsform,HttpServletRequest request) 
{ 
+0

都能跟得上使用的ModelAttribute名其仍然NT工作 – TheDragonWarrior

+0

你检查ac_year的第一种方法的价值?也许这是数据问题。您可以通过手动设置ac_year和第一种方法来检查值,然后检查它是否以第二种方法进入。同时在两种方法中设置模型属性名称“basschoolsform”。 –

+0

是的,我也是这样做的。它仍然没有工作..也很厌烦在实体类的setter和getters中打印。值在第一种方法中存在,在下一种方法中becoms null – TheDragonWarrior