【问题标题】:Redirecting to a controller in SpringMvc重定向到 Spring Mvc 中的控制器
【发布时间】:2023-03-22 12:18:01
【问题描述】:

我有一个类,其中有多个控制器,我想从一个控制器调用另一个在不同类中的控制器,当调用特定控制器时,该控制器将创建视图。

我的代码是
第一类 // 将调用控制器的类

    @Controller
@RequestMapping(value="/register")
public class PatientController {
@RequestMapping(value="/demo1", method=RequestMethod.GET)
public String demo1(){
    System.out.println("Demo1 method.....");
    return "redirect:user/dashboard";
}
}  

第二类 // 要调用的这个类的控制器

@Controller
        @RequestMapping("/user")
    public class UserDasboardController {
    @RequestMapping(value="/dashboard", method=RequestMethod.GET)
        public String get(ModelMap model){

            return "userdashboard";// returning view
        }

    }  

在调用第一个控制器后,将 URL 设为 ".../register/user/dashboard" 但是它应该给 url as"..../user/dashboard"。

请建议我怎样才能做到这一点。 或者还有其他方法可以做同样的事情。

【问题讨论】:

标签: spring-mvc model-view-controller


【解决方案1】:

当对同一个控制器文件使用重定向时,我们可以将其用作

return "redirect: controllerName"  

如果你想调用另一个类的控制器,你必须在它之前使用/ 调用它,这样就可以了

"redirect:/firstController/yourSubController"  

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    另一种解决方案是:MvcUriComponentsBuilder MvcUriComponentsBuilder docs

    有一些很棒的方法,例如:fromMethod()、fromController() 等等。 您可以自动接收到另一个方法/控制器的正确重定向路径。

    示例 - 重定向到另一个控制器:

    final UriComponentsBuilder uriComponents = MvcUriComponentsBuilder.fromController(WheredoYouWantToRedirectController.class);
    final String path = uriComponents.build().getPath();
    
    return REDIRECT_PREFIX+path;
    

    以同样的方式,您可以使用重定向到方法。 MvcUriComponentsBuilder 有助于减少与重定向相关的错误。

    请查看文档以获取更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多