gpt4 book ai didi

java - 是否可以在注解方法中引用@RequestMapping值?

转载 作者:行者123 更新时间:2023-11-30 07:47:41 24 4
gpt4 key购买 nike

给出如下方法:

@RequestMapping(value = {"/foo"}, method = RequestMethod.GET)
public String getMappingValueInMethod() {
log.debug("requested "+foo); //how can I make this refer to /foo programmatically?
return "bar";
}

该用例用于重构一些冗长的代码。我有几个 GET 方法做大致相同的事情,只是请求映射值不同。

我已经考虑过使用路径变量,但这并不是我真正想要的(除非有一些我看不到的巧妙用法)。我还可以从 HttpServletRequest 中获取值,如 this post 中所示。 ,但不确定是否有更好的方法。

最佳答案

解决方案1

HttpServletRequest .

@RequestMapping(value = "/foo", method = RequestMethod.GET)
public String fooMethod(HttpServletRequest request) {
String path = request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();
System.out.println("path foo: " + path);
return "bar";
}

解决方案2

reflection .

@RequestMapping(value = "/foo2", method = RequestMethod.GET)
public String fooMethod2() {
try {
Method m = YourClassController.class.getMethod("fooMethod2");
String path = m.getAnnotation(RequestMapping.class).value()[0];
System.out.println("foo2 path: " + path);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}

return "bar";
}

如果您想从类(而不是方法)获取路径,您可以使用:

String path = YourClassController.class.getAnnotation(RequestMapping.class).value();

解决方案3

@PathVariable .

 @RequestMapping(value = {"/{foo3}"}, method = RequestMethod.GET)
public @ResponseBody String fooMethod3(@PathVariable("foo3") String path) {
path = "/" + path; // if you need "/"
System.out.println("foo3 path: " + path);
return "bar";
}

关于java - 是否可以在注解方法中引用@RequestMapping值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com