1

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

4

1 回答 1

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

于 2013-10-29T16:15:53.223 回答