Spring @SessionAttributes无效

时间:2017-03-06 11:14:51

标签: spring session null

我的控制器类

@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。 请告诉我哪里出错了

1 个答案:

答案 0 :(得分:0)

首先,您需要初始化ModelAttribute并在方法参数

中使用ModelAttribute名称
@Controller
@SessionAttributes("basschoolsform")
public class SchoolStudentsConfirmationContrl 
{
    @ModelAttribute("basschoolsform")
    public BASSchoolsForm populate(){
         return new BASSchoolsForm();
    }
    ................

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