【问题标题】:Spring @SessionAttributes not workingSpring @SessionAttributes 不起作用
【发布时间】:2017-03-06 11:14:50
【问题描述】:

我的控制器类

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

【问题讨论】:

    标签: spring session null


    【解决方案1】:

    首先需要初始化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_year 的值?也许是数据绑定问题。您可以通过手动设置 ac_year 和第一种方法中的值来检查,然后检查它是否进入第二种方法。同时在这两种方法中设置模型属性名称“basschoolsform”。
    • 是的,我也这样做了..它仍然无法正常工作..在实体类的 setter 和 getter 中打印也很累。值存在于第一个方法中,在下一个方法中变为 null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2015-09-29
    • 2012-05-31
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多