如何将bean从一个控制器传递到另一个控制器?我试过的是:
页面的默认获取控制器
@RequestMapping( value = "/{prePath:[a-zA-Z]+}/module", method = RequestMethod.GET )
public String module( @RequestParam( defaultValue = "" )
String message, @RequestParam( defaultValue = "" )
String messageType, HttpServletRequest request, ModelMap model )
{
model.addAttribute( "message", message );
model.addAttribute( "messageType", messageType );
return "als-student/module";
}
链接到控制器
<a href="../${ usertype }/module/${ file_id }.do" >Spring Tutorial</a>
另一个控制器,它只从数据库中提取数据并假设将数据发送到另一个控制器
@RequestMapping( value = "/{prePath:[a-zA-Z]+}/module/{file_id}" )
public String getModule( @PathVariable( "file_id" )
int fileId, Model model )
{
try
{
FileBean fileBean = new FileDAO().getFileInfo( fileId );
if( fileBean != null )
{
model.addAttribute( "fileBean", fileBean );
return "redirect:../module.do";
}
}
catch( Exception e )
{
e.printStackTrace();
}
return "redirect:../module.do?error";
}
但是我无法访问jsp,它什么都没有显示。这是我访问它的方式
<p> ${ fileBean.fileName } </p>
答案 0 :(得分:0)
您需要使用RedirectAttributes
来实现此目标:
@RequestMapping( value = "/{prePath:[a-zA-Z]+}/module/{file_id}" )
public String getModule( @PathVariable( "file_id" )
int fileId, Model model, RedirectAttributes redirectAttributes)
{
try
{
FileBean fileBean = new FileDAO().getFileInfo( fileId );
if( fileBean != null )
{
//model.addAttribute( "fileBean", fileBean );
redirectAttributes.addFlashAttribute("fileBean", fileBean);
return "redirect:../module.do";
}
}
catch( Exception e )
{
e.printStackTrace();
}
return "redirect:../module.do?error";
}
Flash attributes
会在重定向之前临时保存(通常在会话中),以便在重定向后立即删除请求。