【发布时间】:2019-10-08 04:14:54
【问题描述】:
我想通过 Java 类调用控制器的方法,这样我就可以返回一个特定的视图。在这种情况下,我有一个简短的 ID 列表;如果当前用户的 ID 不在该列表中,则重定向到一个视图 invalidUser。
我可以在客户端使用 Ajax 或按钮:onclick="location.href='/invalidUser'
但我不清楚如何从 Java 类调用 ViewsController 的 invalidUser() 方法。
如何在 invalidUserRedirect() 方法中使用 Java 执行此操作?我正在考虑从 HttpServletRequest 获取基本 URL,如下所示:Get Root/Base Url In Spring MVC 然后对 baseUrl + "/invalidUser" 进行 http 调用,但这似乎不是正确的方法。
授权服务:
@Service
public class AuthService {
public void invalidUserRedirect(HttpServletRequest request) {
// Make call to invalidUser() in ViewsController
}
}
视图控制器:
@Controller
public class ViewsController {
@RequestMapping(value = "/invalidUser", method = {RequestMethod.GET})
public String invalidUser() {
return "invalid";
}
}
【问题讨论】:
-
这里有什么要求?为什么要从服务中调用控制器?
-
简单地说,即使你设法从服务中调用控制器方法,结果也不会是
a specific view,而是字符串invalid。 -
@Boris 试着重新思考你的目标是什么。它是调用控制器中的方法,还是返回特定的渲染视图?
-
你可以做的是从你的服务中抛出一个定制的异常并在
@ExceptionHandler中捕获它。然后你返回一个带有重定向的响应。
标签: java rest spring-boot spring-mvc