在我目前的春季项目中,我添加了几对类(控制器/服务),通过多种支付服务提供支付选项。这个类中的每一个都有这样的结构:
控制器
@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() {
...
}
}
任何人都可以给我一个关于如何实现这一目标的提示吗?
答案 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在评论中提到的那样 - 我不会在服务层中进行重定向,而是返回一个布尔值来决定是否需要重定向 - 然后在控制器层中执行此操作。
希望它有所帮助。