【问题标题】:How to redirect from a controller to another controller on Spring如何在 Spring 上从一个控制器重定向到另一个控制器
【发布时间】:2013-04-30 09:28:17
【问题描述】:

尝试做一些应该很容易的事情...... 我正在使用 Spring MVC 3,我想将调用从另一个控制器内部重定向到一个控制器...例如:

@Controller
@SessionAttributes
public class UserFormController {
@Autowired
private UserService userService;
@RequestMapping(value = "/method1", method = RequestMethod.GET)
public ModelAndView redirectFormPage() {
//redirect to controller2 here, 
//pointing to a method inside it, without going to any url first
}

尝试使用 modelandview 来做到这一点,但在我看来,所有解决方案都必须先通过一个 url,然后我才能重定向到控制器。

感谢大家的帮助!

=============== 更多信息 =========== 流程是这样的:controller1 上的 methodA 被调用...做一些事情...然后想将用户重定向到 listPage...这个页面有一个对象列表,controller2 上的 methodB 能够加载并将其发送到此 listPage。我想要实现的是:总是有人需要获取此页面,我将在此控制器 2 上调用此方法并加载它。

【问题讨论】:

  • 所以你想让controller2返回ModelAndView对象?并且您希望此特定方法不被映射到 url?
  • @reagten 否...实际上,controller2 上的这个方法被映射到一个页面,这就是我想要的。问题是:我必须在进入某个页面之前加载一个数据列表。将添加有关问题描述的更多信息...谢谢!

标签: spring spring-mvc


【解决方案1】:

你可以的

public String redirectFormPage() {
    return "redirect:/url/controller2";
}

【讨论】:

  • 你的意思是把它指向映射在@RequestMapping 上的名字?
  • 是的,你的第二个控制器的 URL 映射。它会自动将请求重定向到另一个控制器。
  • 我试过了,不同的是我的控制器上没有@RequestMapping 名称......我在这个控制器中命名了这些方法,并且使用重定向调用它们不起作用。如果我命名我的控制器,我怎么知道我想要调用哪个方法?
  • 如果您的控制器没有请求映射,那么它是控制器吗?否则如何访问?
  • 如果你在控制器上放一个注解作为控制器,并在方法上放一个requestmapping,它会被正常调用......这样你可以直接调用你想要的tje方法......
【解决方案2】:

我不知道你为什么要这样做,但这可能有效:

@Controller
@SessionAttributes
public class UserFormController {
@Autowired
private UserService userService;

@Autowired
private Controller2 controller2;

@RequestMapping(value = "/method1", method = RequestMethod.GET)
public ModelAndView redirectFormPage() {
 return controller2.redirectMethod();
}

只需注入 Controller2 并调用所需的方法

【讨论】:

  • 嗯..我正在寻找一种更好的方法,然后不得不将构造函数注入另一个构造函数中......想知道 MVC 是否不会将所有方法映射到某个地方,以便我可以调用它们......添加有关该问题的更多信息,以便您了解我为什么这样做...
【解决方案3】:

很好的问题。我喜欢使用 struts 重定向操作结果类型,以避免将下一个视图的知识放入处理已发布表单的操作中。

例如,像UpdateContactInfoAction 这样的类的操作方法将返回contactInfoSaved,而不是为下一个视图准备数据并返回gotoShippingOptionsPage。流程中的下一步是选择运输选项的知识仅在 struts 配置中。

有人知道如何使用 Spring MVC 做到这一点吗?

【讨论】:

  • 这更好地用于评论而不是潜在的答案,因为询问者特别询问了 Spring。尝试实际引导用户找到他们需要的答案。
猜你喜欢
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2023-04-10
相关资源
最近更新 更多