- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我希望能够做到这一点:
@Controller
@RequestMapping("/#{handlerMappingPaths.security}/*")
public class SecurityController {
etc
//for instance, to resuse the value as a base for the folder resolution
@Value("#{handlerMappingPaths.security}/")
public String RESOURCE_FOLDER;
@RequestMapping(value="/signin-again", method = RequestMethod.GET)
public String signinAgainHandler() {
return RESOURCE_FOLDER + "signin_again";
}
}
现在这似乎不起作用,我是不是漏掉了什么?
最佳答案
要了解此类情况,一种方法是亲自看看。这是一个用于 eclipse 的示例,但它对于其他 IDE 的工作方式应该类似:
首先,确保您拥有所使用的 spring 库的源代码。如果你使用 maven,这是最简单的,using the maven-eclipse-plugin或使用 m2eclipse .
然后,在 Eclipse 中选择 Navigate -> Open Type...
。输入您要查找的类型(类似 RequestMa*
的内容应该适合像我这样的懒惰打字者)。输入/确定。现在右键单击源文件中的类名并选择References -> Project
。在搜索 View 中,将出现该类或注释的所有使用。
其中之一是 DefaultAnnotationHandlerMapping.determineUrlsForHandlerMethods(Class, boolean) ,此代码片段将告诉您未评估表达式语言:
ReflectionUtils.doWithMethods(currentHandlerType, new ReflectionUtils.MethodCallback() {
public void doWith(Method method) {
RequestMapping mapping = AnnotationUtils.findAnnotation(
method, RequestMapping.class);
if (mapping != null) {
String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
// this is where Expression Language would be parsed
// but it isn't, as you can see
if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
mappedPattern = "/" + mappedPattern;
}
addUrlsForPath(urls, mappedPattern);
}
}
else if (hasTypeLevelMapping) {
urls.add(null);
}
}
}
}, ReflectionUtils.USER_DECLARED_METHODS);
请记住,它叫做开源。如果您不尝试了解您正在使用的是什么,那么使用开源软件就没有意义。
关于java - 我们可以在其他注释中使用 spring 表达式(spel)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3281978/
我正在尝试使用 spring SpEL 来解析在 UDP 中收到的消息。 为了理解如何使用 Spring SpEL,我写了这个: 上下文.xml:
我想将 xml 文件中分配的属性值传递给 Java 中的 Spring 表达式(SpEL)。你能指出我如何实现这一目标吗?为了清楚起见,我提供了以下示例。 example.xml 文件:
我正在尝试将 spring 版本从 3.0.5 升级到 3.2.11。 当表达式比较空值时,我遇到了 SpEL 的麻烦,如下所示: new SpelExpressionParser().parseEx
例如,我在 Spring boot 的 application.yml 中有一个属性。 some: strNumber: "5" 我想以此属性的某些其他属性的值(value)为基础。例如 some
我试图从属性中获取一个字符串,对其运行操作,然后将其存储为带有 @Value 注释的变量。不幸的是,当我使用 SpEL 所需的 #{'${variable}'} 语法时,字符串发生了变化。如果我有两个
在我的应用程序中,我有一些带有多个 SpEL 表达式的对象,这些表达式通常包含带有 boolean 返回类型以调用和逻辑运算符的方法签名。在缓存这些对象之前,我通过简单地执行已解析的表达式来检查表达式
我正在尝试在 Spring 集成流程中构建一个 url,如下所示: 但是我不断收到以下错误: SpelParseException: EL1041E:(pos 9): After parsing a
我想根据某些条件导入不同的资源文件。这可能吗? 这些不起作用: 最佳答案 支持 SpEL,但 Spring 很早就解析了 import 语句。 spring 在解析 import 语句时,属性占位
我有一个类的方法:代码: List getData() {...} 和一些扩展实体的类:项目、阶段、发票、付款。 我想做这样的事情: @PostFilter("filterObject instans
我正在尝试计算以下 SpEL 表达式(Spring 表达式版本 3.1.1): T(com.google.common.collect.Lists).newArrayList(#iterable) #
作为我项目的一部分,我正在实现一个基于 SpEL 的规则引擎,我正在努力使其尽可能高效。基本上,该引擎由 SpEL 语法中的持久条件组成。当需要评估输入时,我会在数据库中查询相关规则 - SpEL 表
就 Spring 3.0 中使用的 SpEL 而言, 我想问一下,是否可以执行以下操作(在 bean 定义 .xml 中): 东西。就像在jSTL中一样。
我是法国人,所以我放了一些 é è ê ô û 在我的代码中。 (而且我的英语说得不是很好)。 我在类 Formulaires 中有一个类似的方法: public static Formulair
我发现一篇文章Open source library with vulnerabilities . 这篇文章指出“Spring 表达式语言 (SpEL) 可以通过 HTTP 参数提交来利用,从而允许攻
我遇到了一个问题,我尝试监听EnvironmentChangeEvent并重新初始化一些配置。 虽然我发现 SpEL 的 @Value 注释不起作用,但普通的 @Value 注释就可以了: @Comp
给定 java.util.Date() ,如何使用 Spring 表达式语言创建 Calendar 对象? 这个有效: 但我需要从 java.util.Date() 向其构造函数提供日、月和年。我有
是否有某个地方有带有 Spring 表达式语言 shell 的 swing 控制台? 最佳答案 据我所知,没有控制台或命令行评估器,但我建议您下载 org.springframework.expres
我想在 application.properties 中计算我的端口号,如下所示: server.port=#{ 1 + ${myapp.web.server.port.ssl} } myapp.we
我要评估 "user.name" 但是 user 可能为 null,这当然会导致 NPE 有没有办法说仅在 user 不为 null 时才尝试获取名称?否则返回 null。 我读过有关 Elvis 语
我需要知道 Spring SpEL 在语法和功能方面是否有限制。例如我需要运行这个表达式: Integer cnt=0; if(obj.val1<10){return 1;} else{ cnt=cn
我是一名优秀的程序员,十分优秀!