2

これは私の注釈です:

@RequestMapping(method = RequestMethod.POST, value = "/trade/createrequisition")

it is POSTこの場合はリクエストメソッドを取得し、この場合は値を取得したいと思いit is /trade/createrequisitionます。

Javaでリフレクションを使用してこれを行う方法。

これを解決するのを手伝ってください。

編集:

これは私の実際の方法です:

@PreAuthorize("isAuthenticated() and hasPermission(#request, 'CREATE_REQUISITION')")
    @RequestMapping(method = RequestMethod.POST, value = "/trade/createrequisition")
    public @ResponseBody
    void createRequisition(@RequestBody CreateRequisitionRO[] request,
            @RequestHeader("validateOnly") boolean validateOnly) {
....
}

これは、@RequestiMapping を取得しようとした方法です。

package com.hexgen.reflection;

import java.lang.reflect.Method;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.hexgen.api.facade.HexgenWebAPI;

public class WebAPITest {
    public static void main(String[] args) {
        try {
            Class<HexgenWebAPI> clazz = HexgenWebAPI.class;
            Method methodAnnotaion = clazz.getMethod("createRequisition");
            RequestMapping methodRequestMappingAnnotation = methodAnnotaion.getAnnotation(RequestMapping.class);
            RequestMethod[] methods = methodRequestMappingAnnotation.method();
            String[] mappingValues = methodRequestMappingAnnotation.value();

            for(RequestMethod req : methods){
                System.out.println("RequestMethod : " + req);
            }

            for (String string : mappingValues) {
                System.out.println("mappingValues : " + string);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

しかし、私はこの例外を受け取ります:

java.lang.NoSuchMethodException: com.hexgen.api.facade.HexgenWebAPI.createRequisition()
    at java.lang.Class.getMethod(Class.java:1605)
    at com.hexgen.reflection.WebAPITest.main(WebAPITest.java:12)
4

2 に答える 2

2

アノテーションを取得しようとしておりRequestMapping、クラスまたはメソッドに配置できるため、以下の両方の使用法を参照してください。

クラスの場合YourClass:

Class<YourClass> clazz = YourClass.class;
RequestMapping clazzRequestMappingAnnotation = clazz.getAnnotation(RequestMapping.class);
RequestMethod[] methods = clazzRequestMappingAnnotation.method();
String[] mappingValues = clazzRequestMappingAnnotation.value();

methodNameクラスのメソッドの場合YourClass:

Class<YourClass> clazz = YourClass.class;
Method method = clazz.getMethod("methodName");
RequestMapping methodRequestMappingAnnotation = method.getAnnotation(RequestMapping.class);
RequestMethod[] methods = methodRequestMappingAnnotation.method();
String[] mappingValues = methodRequestMappingAnnotation.value();
于 2013-04-12T04:40:38.033 に答える
1

この注釈がクラスにある場合 (例: Test)

RequestMapping a = Test.class.getAnnotation(RequestMapping.class);
RequestMethod m = a.getMethod();
于 2013-04-12T04:32:40.670 に答える