我有一个集成了 DWR 3 和 Spring 3 的 Web 应用程序。所有请求都由 Spring 的 DispatcherServlet 处理。一切正常。当我请求一个 AJAX 请求时,它由带有 @RemoteProxy 注释的后备 DWR 服务 bean 正确处理。为了返回响应,我的 DWR 服务 bean 要么返回一个包含 @DataTransferObject POJO 的 HTML 字符串,要么只返回一个普通的 POJO。
我想要做的是在 DWR 服务 bean 中,我希望它将处理转发到 Spring @Controller bean。AJAX 请求仍将由 DWR 服务处理,但真正的处理委托给 Spring 控制器 bean。换句话说,DWR 服务 bean 只是实际服务的一个服务外观。这样,我不是在重复逻辑。
这可能吗?
让我进一步澄清。
在普通的非 AJAX 应用程序中,当用户提交表单时,会发生以下情况:
- 它被转发到 DispatcherServlet
- 然后到 @Controller 注释的 bean。
- 然后由@Service bean 处理处理。
- 之后,控制器返回一个 ModelAndView。
在 DWR-AJAX 应用程序中,当用户提交表单时,会发生以下情况:
- 它仍然转发到 DispatcherServlet
- 然后到 @RemoteProxy 注释的 bean。该处理由该 bean 处理。那是 DWR 的服务 bean。
- 之后,这个远程代理 bean 返回一个 @DataTransferObject POJO 或者只是纯 HTML 字符串
基本上对于 AJAX 应用程序,在第 2 步之后,我希望它转发到 @Controller bean,以便一切仍由 Spring 处理。