如何从服务类重定向到外部URL?

时间:2014-12-19 20:25:16

标签: java spring spring-mvc

在我目前的春季项目中,我添加了几对类(控制器/服务),通过多种支付服务提供支付选项。这个类中的每一个都有这样的结构:

控制器

@Controller
@RequestMapping(value = "pagseguro")
public class pagseguroPaymentController extends paymentController<Pagseguro> {
    ...
    @Override
    @RequestMapping(value = "comprar", method = RequestMethod.POST)
    public void comprar(String payerId, String guid) throws Exception {
        this.payment.comprar(payerId, guid);
    }
    ...
}

服务

@Service
public class pagseguroPaymentService extends paymentService<Pagseguro> {
  ...
  @Override
  public void comprar(String payerId, String guid) throws Exception {
    ...
    String response = checkout.register(null, false);
  }
  ...
}

在服务类的方法comprar中,我需要将应用程序重定向到存储在String变量中的URL(上例中的response)。

我最初的想法是使用Java中的库java.net并创建一个类似的实用类:

public class Redirect {
    public static String url;

    public static void redirect() {
        ...
    }
}

任何人都可以给我一个关于如何实现这一目标的提示吗?

1 个答案:

答案 0 :(得分:0)

要执行简单的重定向,您可以在Controller层注入HttpServletResponse

@RequestMapping(value = "comprar", method = RequestMethod.POST)
public void comprar(String payerId, String guid, HttpServletResponse response) throws Exception {
    this.payment.comprar(payerId, guid);
}

然后只需使用该对象进行重定向:

response.sendRedirect("http://newUrl");

现在 - 正如Luiggi在评论中提到的那样 - 我不会在服务层中进行重定向,而是返回一个布尔值来决定是否需要重定向 - 然后在控制器层中执行此操作。

希望它有所帮助。