Spring mvc SpringMVC:在方法中获取RequestMapping值
在我的应用程序中,出于某些原因,我希望能够在相应的方法中获取@RequestMapping的值,但是,我找不到一种方法来实现这一点。以下是关于我想要什么的更多细节: 假设我有这样一个方法:Spring mvc SpringMVC:在方法中获取RequestMapping值,spring-mvc,Spring Mvc,在我的应用程序中,出于某些原因,我希望能够在相应的方法中获取@RequestMapping的值,但是,我找不到一种方法来实现这一点。以下是关于我想要什么的更多细节: 假设我有这样一个方法: @请求映射(value=“/hello”) @应答器 公共无效helloMethod(大气资源大气资源){ ... } 我希望能够在方法中获得映射“/hello”。我知道,我可以在映射中使用占位符,以便在实际请求到来时获取它们的值,但我需要一组有限的可处理请求,并且我不希望在我的方法中出现一系列ifs或s
@请求映射(value=“/hello”)
@应答器
公共无效helloMethod(大气资源大气资源){
...
}
我希望能够在方法中获得映射“/hello”。我知道,我可以在映射中使用占位符,以便在实际请求到来时获取它们的值,但我需要一组有限的可处理请求,并且我不希望在我的方法中出现一系列if
s或switch
es
有可能吗?这实际上是一样的,不是吗
private final static String MAPPING = "/hello";
@RequestMapping(value = MAPPING)
@ResponseBody
public void helloMethod(AtmosphereResource atmosphereResource) {
// MAPPING accessible as it's stored in instance variable
}
但要回答最初的问题:如果没有直接的方法访问这些信息,我不会感到惊讶,很难找到在控制器代码中访问这些信息的正当理由(在我看来,带注释控制器的最大好处之一是,您可以完全忘记底层的web层,并使用简单的、不支持servlet的方法来实现它们)这实际上是一样的,不是吗
private final static String MAPPING = "/hello";
@RequestMapping(value = MAPPING)
@ResponseBody
public void helloMethod(AtmosphereResource atmosphereResource) {
// MAPPING accessible as it's stored in instance variable
}
但要回答最初的问题:如果没有直接的方法访问这些信息,我不会感到惊讶,很难找到在控制器代码中访问这些信息的正当理由(在我看来,带注释控制器的最大好处之一是,您可以完全忘记底层web层,并使用普通的、不支持servlet的方法实现它们)您可以获得此方法的annotation@RequestMapping,就像获得任何其他注释一样:
@RequestMapping("foo")
public void fooMethod() {
System.out.printf("mapping=" + getMapping("fooMethod"));
}
private String getMapping(String methodName) {
Method methods[] = this.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
if (methods[i].getName() == methodName) {
String mapping[] = methods[i].getAnnotation(RequestMapping.class).value();
if (mapping.length > 0) {
return mapping[mapping.length - 1];
}
}
}
return null;
}
@RequestMapping(“foo”)
公共方法(){
System.out.printf(“mapping=“+getMapping(“foodmethod”));
}
私有字符串getMapping(字符串方法名){
方法方法[]=this.getClass().getMethods();
for(int i=0;i0){
返回映射[mapping.length-1];
}
}
}
返回null;
}
这里我显式地传递方法的名称。如果绝对必要,请参阅关于如何获取当前方法名称的讨论:您可以像获取任何其他注释一样获取此方法的注释@RequestMapping:
@RequestMapping("foo")
public void fooMethod() {
System.out.printf("mapping=" + getMapping("fooMethod"));
}
private String getMapping(String methodName) {
Method methods[] = this.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
if (methods[i].getName() == methodName) {
String mapping[] = methods[i].getAnnotation(RequestMapping.class).value();
if (mapping.length > 0) {
return mapping[mapping.length - 1];
}
}
}
return null;
}
@RequestMapping(“foo”)
公共方法(){
System.out.printf(“mapping=“+getMapping(“foodmethod”));
}
私有字符串getMapping(字符串方法名){
方法方法[]=this.getClass().getMethods();
for(int i=0;i0){
返回映射[mapping.length-1];
}
}
}
返回null;
}
这里我显式地传递方法的名称。如果绝对必要,请参阅关于如何获取当前方法名称的讨论:对于控制器上的请求映射,如何执行此操作?@trusktr,不要将映射设置为私有的,并使用类名限定它。
@RequestMapping(MyClass.mapping)
。我认为这样做没有什么意义。对于控制器上的请求映射,您如何做到这一点?@trusktr,不要将映射设为私有
,并用类名限定它。@RequestMapping(MyClass.mapping)
。但我认为这样做没有什么意义。