Spring@SessionAttributes不起作用

Spring@SessionAttributes不起作用,spring,session,null,Spring,Session,Null,我的控制器类 @Controller @SessionAttributes("basschoolsform") public class SchoolStudentsConfirmationContrl { 下面的方法接受ac_year并相应地获取数据,并重定向到页面showreport @RequestMapping(value="/SchoolStudentConfirmation.getData",method=RequestMethod.GET) public Mod

我的控制器类

@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;
        }
@RequestMapping(value=“/SchoolStudentConfirmation.getData”,method=RequestMethod.GET)
公共模型和查看BASyearWiseReport(@ModelAttribute BasSchoolForm BasSchoolForm,HttpServletRequest)
{
ModelAndView mav=新ModelAndView();
尝试
{
列表结果=schoolstdconfirmservice.basyearwiseport(请求,basschoolsform);
PageHeading=“BAS学生学年确认书:”+BasSchoolForm.getAc_Year()
如果(!result.isEmpty())
{
mav.addObject(“结果”,结果);
}
其他的
{
mav.addObject(“msg”,“未找到数据”);
}
mav.setViewName(“showreportwithmenu”);
}
捕获(例外e)
{
e、 printStackTrace();
}
mav.addObject(“BasSchoolForm”,BasSchoolForm);
返回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;
    }
@RequestMapping(value=“/SchoolStudentConfirmation.ConfirmStudentByDO”,method=RequestMethod.GET)
公共模型和视图ConfirmStudentByDO(@ModelAttribute BasSchoolForm BasSchoolForm,HttpServletRequest)
{
ModelAndView mav=新ModelAndView();
System.out.println(basschoolsform.getAc_year()+“以后的值”);
List studentdata=schoolstdconfirmservice.ConfirmStudentByDO(basschoolsform,request);
if(studentdata!=null&&studentdata.size()>0)
{   
mav.addObject(“页面标题”,“学年:”+request.getParameter(“ac_Year”)+“学校:”+request.getParameter(“学校”);
mav.addObject(“studentdata”,studentdata);
mav.addObject(“学校类型”,request.getParameter(“学校”).split(“-”[2]);
request.setAttribute(“学校”,request.getParameter(“学校”);
}
其他的
{
mav.addObject(“msg”,“所有应用程序均已确认”);
mav.addObject(“展示年”、“展示年”);
}
mav.setViewName(“studentstatusedit”);
返回mav;
}
虽然我添加了sessionAttribute,但在下一个方法中,ac_year为null。
请告诉我我错在哪里

首先,您需要初始化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)
 {

您是否在第一种方法中检查了ac_年的值?也许这是数据滥用的问题。您可以通过手动设置ac_year和第一种方法中的值进行检查,然后检查其是否位于第二种方法中。在这两个方法中也设置模型属性名“BasSchoolForm”。是的,我也这样做了。它仍然不起作用。在实体类的setter和getter中打印也很累。值存在于第一个方法中,因为在下一个方法中为null