1

2 つのメソッドを持つコントローラーがあります。1 つはユーザーを削除するためのもので、もう 1 つはロールからユーザーを削除するためのものです。

    @Controller
    @RequestMapping(value="/rest/users/**")
    public class UsersCtrlr {

        @RequestMapping(value="/{username:.+}", method=RequestMethod.DELETE)
        public @ResponseBody HttpStatusDoc deleteUser(HttpServletRequest req, @PathVariable String username) {
         ...
        }

        @RequestMapping(value="/{username:.+}/roles/{role:.+}", method=RequestMethod.DELETE)
        public @ResponseBody HttpStatusDoc deleteUserRole(HttpServletRequest req, @PathVariable String username, @PathVariable String role) {
         ...
        }
    }

私のフロントエンドは、次のような URL で jquery ajax 呼び出しを行います。

/rest/users/jdoe@foo.com/roles/some_role

usernameこの uri は、等しい値を持つ deleteUser メソッドにマップされています。some_role

私はuriをdeleteUserRoleにマップし、にusername設定しjdoe@foo.com、にrole設定しようとしていsome_roleます。

uri が deleteUserRole にマップされないのはなぜですか? RequestMappings の正規表現と何か関係がありますか?

4

1 に答える 1

0

**クラス @RequestMapping アノテーションが原因である可能性が高く、マッピングは forと forにdeleteUserなり、最初のマッピングはパターンに一致します。クラス @RequestMapping アノテーションから削除すると機能するはずです/rest/users/**/{username:.+}deleteUserRole/rest/users/**/{username:.+}/roles/{role:.+}/rest/users/jdoe@foo.com/roles/some_role**

于 2012-08-07T16:05:49.193 に答える