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