问题标签 [spring-el]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1579 浏览

spring-security - @PreAuthorize:实现类中的引用属性

我有服务接口

和抽象实现

的每个实现都Compound需要它自己的扩展服务接口CompoundService和它自己的扩展服务类CompoundServiceImpl

我现在想在CompoundService. 据我了解,我必须将它们添加到接口而不是实际实现中。由于用户可以针对不同的实现具有不同的角色Compound,因此我必须考虑到这一点。意思是@PreAuthorize我想获得Compound实现的名称,例如。compoundClass.getSimpleName(). 所以我得到类似的东西:

这基本上就是这里提到的:

https://jira.springsource.org/browse/SEC-1640

但是没有示例,我并没有真正得到解决方案。那我应该用this吗?或如上#root.this

我的第二个问题是,因为这是在一个将由代理(来自 spring)实现的接口中,所以 experession 是否会this.compoundClass正确评估?

最后但并非最不重要的一点是,我该如何实际测试呢?*

* 我实际上并没有创建一个完成的应用程序,而是一些可配置的东西,比如用于特定类型数据库搜索的框架。这意味着大多数授权和身份验证的东西必须来自实施者。

0 投票
1 回答
2298 浏览

spring-el - 用于 ThymeLeaf 的自定义 SpEL 函数

ThymeLeaf newb 问题在这里:我想注册一个自定义 SpEL 实用程序对象以提供一些自定义格式。Spring EL 文档说我应该使用StandardEvaluationContext.registerFunction() 来执行此操作,这很好,但我希望它可用于我的 ThymeLeaf 模板中的所有 SpEL 函数。我认为这是在 servlet 上下文 XML 中完成的,但我不知道如何去做,也找不到解释如何去做的 ThymeLeaf 文档。

0 投票
1 回答
1447 浏览

java - FullAjaxExceptionhandler 只捕获 javax.el.E​​LException 或 java.lang.Throwable

FullAjacExceptionHandler 只能捕获 javax.el.E​​LException 或 java.lang.Throwable。Throwable 也优先于 javax.el.E​​LException。我需要显式捕获托管 bean 抛出的特定异常。但是,ELException 显然包含了根本原因异常(即 LoginFailedException)。

我正在使用 JSF 2 (MyFaces 2.1.10)、Spring EL resolver (Spring managed beans)、el-api-2.2 和 glassfish el-impl-2.2。

这是错误:

LoginFailedException 是一个简单的自定义异常。我将不胜感激任何帮助。提前致谢。

编辑:实验完成:

我创建了 3 个错误页面,以查看在引发 LoginFailedException 时将调用/使用哪个错误页面。XHTML 错误页面包含完全相同的代码,但标头 String 标识哪个是哪个。这是 web.xml 错误条目:

将使用 catchAllThrowable.xhtml。如果我删除(在 web.xml 上注释掉) Throwable ,将使用 ELException.xhtml。如果我删除 ELException,异常将由容器(tomcat)而不是 loginError.xhtml 处理。

希望这能澄清我的情况。

更新:

我现在使用 AJAX 调用来提交表单(我想这是处理程序的用途),所有 3 个错误处理程序页面都在 web.xml 上处于活动状态(Throwable、ELException、LoginFailedException):

Throwable 已被跳过,并且 ELException 已匹配(呈现 elException.xhtml)。仍然无法将 LoginFailedException 归零。

0 投票
2 回答
1606 浏览

java - Linux 中的 Spring PropertyPlaceholderConfigurer

在 applicationContext.xml 中配置:

我已经在我的用户和 root 的 .bashrc 文件中设置了环境变量,就像这样

在启动 tomcat 时出现错误

我也试过这样:

这次我得到了错误

这意味着 SpEL 在 applicationContext.xml 中可以正常工作,但无法从系统环境中获取变量。

为了检查值是否设置正确,我运行echo ${WEB_ENVIRONMENT}并正确返回了值。因此,要检查 java 是否能够从我运行的环境中获取值

这也正确返回了“prod”

两个版本都在 Windows 中运行,但不在 Amazon EC2 的 Linux AMI中。

接下来我应该怎么做才能让它工作?

0 投票
1 回答
554 浏览

java - . bean 名称中的字符并在 SpEL 中使用

我有一个简单的弹簧上下文文件如下:

当我初始化上述上下文时,出现以下错误:

当我将acl.providerbean 名称更改为aclprovider(删除.字符)时,一切正常。

我的问题是:为什么.字符在 bean 名称中使用并在中使用SpEL

0 投票
2 回答
1562 浏览

java - Spring Security 方法规则:返回值包含一个 Collection

在 Spring Security 中,我想保护一个包含返回值并使用@PostAuthorize.

我想添加一个约束,不允许一个用户访问他们不是所有者的资源。我面临的问题是我想根据一组值检查主体 ID。

设想:

域对象:

服务:

当然,这个 Spel 表达式不起作用。

我还没有看到任何适用于 Collection 的示例。 这个未解决的问题类似,但我不知道是否符合我的特定情况。有可能做这样的事情吗?这是做我想做的事情的另一种方式吗?

0 投票
2 回答
11990 浏览

java - 评估 Spring Expression Lang (SpEL) 中的属性

我们的服务有一个根据属性文件安排的进程,读取属性refreshIntervalMillis。它的值通过以下配置直接注入到 Quartz 触发器中:

但是,安装此服务的管理员会考虑小时/天数,因此为了让他们更轻松,我们将其更改为:

  1. 将refreshIntervalMillis重命名为refreshIntervalMinutes
  2. 将上面的代码更改为以下内容:

注意:属性对象公开为名为“configurationProperties”的 bean

是否有更简单的语法来完成相同的操作?

谢谢,

0 投票
1 回答
1035 浏览

java - Spring EL:带地图访问的安全导航

我正在使用 Spring EL 从一组相当复杂的嵌套映射和列表中提取值。我希望能够使用类似的表达式

除了那[9]['firstSubKey']可能是空的。我不知道如何正确使用安全导航:我试过了

并且都返回了某种解析错误。我最终通过使用它来工作

但这感觉很俗气。有没有更好的方法或者这只是 SpringEL 没有的功能?我正在使用 Spring 3.1.3。

相关地,如果我有一个未知数量元素的列表/数组,有没有办法安全地检查它?IE 如果我有一个包含 4 个元素的数组,我想[5]返回 null。照原样,它抛出一个SpelEvaluationException.

0 投票
2 回答
3505 浏览

spring - 等效于 \r、\n、\t 等的 Spring 表达式语言

我正在使用 Spring 集成。我得到一个字符串(有效负载),如下所示:

我需要测试上面的字符串<Element><Sub-Element>是否以实际 开头<Element>\r\n <Sub-Element>.

理想情况下,第一个路由器应该通过测试,但在这种情况下它失败了。谁能帮我找出 SpEL 等价于 \r \n 等?

0 投票
1 回答
395 浏览

spring - SpEL 使用函数

我将下一个 bean 添加到我的 xml 中:

现在,当我运行应用程序时,它处于循环状态:

没有那个bean,它就可以正常工作。