Bean从控制器到另一个

时间:2013-10-29 15:26:07

标签: java spring-mvc

如何将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>

1 个答案:

答案 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会在重定向之前临时保存(通常在会话中),以便在重定向后立即删除请求。