代码之家  ›  专栏  ›  技术社区  ›  Darren Greaves

在Spring拦截器中访问DWR post数据

  •  1
  • Darren Greaves  · 技术社区  · 17 年前

    我有一个具有方法签名的DWR操作,如下所示:

    String joinGroup(String groupId, String groupName);
    

    这是通过DWR AJAX请求调用的,可以正常工作。

    然而,我正在尝试编写一个Spring拦截器(其工作原理非常类似于ServletFilter),以便在调用DWR操作之前执行一些身份验证工作。
    正在正确调用拦截器,但我需要访问拦截器中的groupId和groupName数据。

    请求参数映射是空的,我在调试器中查看了整个请求属性列表,在任何地方都看不到数据。
    请求的postData也为null。

    使用firebug,我可以看到数据正在被传递到服务器(当joinGroup方法最终被调用时,数据就在那里)。

    我有什么办法可以访问它吗?

    2 回复  |  直到 17 年前
        1
  •  2
  •   Pavitar Singh    17 年前

    AjaxFilter的doFilter方法由DWR在每次对配置此过滤器的方法发出Ajax请求时调用。传递到此方法的AjaxFilterChain允许过滤器将方法详细信息传递给链中的下一个实体。

    通常,该方法将执行以下操作:

    1. 检查请求
    2. 可选地更改方法、对象或参数
    3. (可选)修改返回给用户的值
    4. 采取其他一些措施(如记录)
        2
  •  1
  •   Gandalf    17 年前

    我假设你使用的是 只有在上面的方法中才会调用它(意味着您的配置是正确的)。

    ...
    @Override
    public Object invoke(MethodInvocation inv) throws Thorwable {
       Object[] args = inv.getArguments();
       String groupId = args[0];
       String groupName = args[1];
       .... if user has access call inv.proceed, else throw AccessDeniedException
    }
    

    环绕通知 在Spring框架中,与

    推荐文章