DWR Spring集成:是否可以将DWR请求转发给Spring Controller?

时间:2010-11-14 08:39:48

标签: spring controller request dwr forward

我有一个集成了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应用程序中,当用户提交表单时,会发生以下情况:

  1. 它转发给了 DispatcherServlet的
  2. 然后到@Controller注释bean。
  3. 然后由@Service bean处理该处理。
  4. 然后,控制器返回ModelAndView。
  5. 在DWR-AJAX应用程序中,当用户提交表单时,会发生以下情况:

    1. 它仍然转发到DispatcherServlet
    2. 然后注释@RemoteProxy 豆。处理由。处理 这个豆子。这是DWR的服务 豆。
    3. 之后,这个远程代理bean返回@DataTransferObject POJO或只是纯HTML字符串
    4. 基本上对于AJAX应用程序,     在第2步之后,我希望它能够前进     到@Controller bean这样     一切都还在处理中     弹簧。

2 个答案:

答案 0 :(得分:2)

简短的回答是否定的。

弹簧控制器的DWR请求中没有位置。 DWR对远程处理spring bean有很大的支持,但是控制器可以为这个等式带来很小的价值。

那就是说我没有理由认为spring 3.0风格的带注释的控制器不能用作暴露的DWR bean。限制将是返回类型不是ModelAndView而是它只是你自己的模型对象。

答案 1 :(得分:0)

在这种情况下,我对使用注释了解不多。使用声明式方法,您可以执行以下操作。

在Spring XML中(注意fileOperationService是spring bean)

    <bean name="BookRequestAjax" class="com.bookie.struts.BookRequestAjax">
        <property name="fileOperationService" ref="fileOperationService"/>
    </bean>

你的豆子

public class BookRequestAjax {
    FileOperationService fileOperationService;
    public void deleteFile(String fileName){
        try{
            fileOperationService.deleteFile(fileName);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void setFileOperationService(FileOperationService fileOperationService) {
        this.fileOperationService = fileOperationService;
    }

}

您的DWR.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
    <allow>
    <create creator="spring" javascript="BookRequestAjax">
      <param name="beanName" value="BookRequestAjax" />
    </create>
    </allow>
</dwr>