java - 使用 bean 的属性作为参数进行重定向

标签 java spring spring-mvc

我的 Controller 如下所示,它期望 Foo 类型中的 ModelAttribute :

@RequestMapping(value="/search") 
public String search(ModelMap model, @ModelAttribute Foo foo,
          HttpServletRequest request) {

        .....
}   

在另一个 Controller 中,我想将我的 bean Foo 重定向为我的请求 /search 的参数

@RequestMapping(value="/load_search") 
public String load_search(ModelMap model, @ModelAttribute Foo foo, 
            HttpServletRequest request) {

    Foo foo = myService.getFoo();
    return "redirect:/search";
}

那么我怎样才能实现这一目标呢?如何使用我的 bean foo 作为参数重定向到 /search ,如下所示: /search?arg0=..&arg1=.. 其中 arg0, arg1 , .. . 是 bean Foo 的属性吗?

最佳答案

您可以使用RedirectAttributes。它是特殊参数,允许您传递数据抛出重定向。让我们考虑一下您的代码片段的示例:

@RequestMapping(value="/load_search") 
public String load_search(ModelMap model, @ModelAttribute Foo foo, 
            HttpServletRequest request, RedirectAttributes redirectAttrs) {

    Foo foo = myService.getFoo();
    redirectAttrs.addFlashAttribute("foo", foo);
    return "redirect:/search";
}

在目标方法中foo将由Spring自动添加到模型中。如果您需要将 foo 映射到 @ModelAttribute 参数,则应显式指定属性名称,如以下示例所示:

@RequestMapping(value="/search") 
public String search(ModelMap model, @ModelAttribute("foo") Foo foo,
          HttpServletRequest request) {

     //here 'foo' will be added to 'model' and mapped to 'foo'
     .....
}   

有关 RedirectAttributes 的更多详细信息,您可以在 Spring documentation 中找到。 .

关于java - 使用 bean 的属性作为参数进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799785/

相关文章:

java - Swing Pin 中网格单元的颜色渐变动画

java - 如何在 Spring MVC 中使用带有属性名称的 Spring @RequestMapping 注解

java - 为什么会引发 'deleted entity passed to persist' -异常?

java - Spring Boot 应用程序中的动态数据库重新配置

java - 关于Spring bean初始化和销毁​​的一些疑惑

spring-mvc - 使用 oauth2 : Failed to find access token for token 休息服务

java - Java 中的 C 指针等价

Java从文件读取字母表到多维数组

java - 正则表达式:忽略字符前后的空格

java - @Scheduled 中的 Spring session 范围对象