如何在@OpenIdAuthenticationMechanismDefinition的extraParameters中使用EL?
Jakarta EE 10中@OpenIdAuthenticationMechanismDefinition注解的EL表达式使用问题
我在Jakarta EE 10的jakarta-ee-security-api中使用@OpenIdAuthenticationMechanismDefinition注解定义参数时遇到问题,希望了解表达式语言(EL)的正确用法。
硬编码参数可行案例
硬编码参数的方式可以正常运行:
@OpenIdAuthenticationMechanismDefinition( clientId = "123", clientSecret = "xxx", extraParameters = { "audience=abc", "team=def" } ) public class MyBean { ... }
单个参数EL绑定可行案例
Jakarta EE的jakarta-ee-security-api支持通过EL引用CDI Bean实现动态赋值,如下对clientId和clientSecret的设置可正常工作:
@OpenIdAuthenticationMechanismDefinition( clientId = "${configBean.clientId}", clientSecret = "${configBean.clientSecret}", extraParameters = { "audience=abc", "team=def" } ) public class MyBean { ... }
数组参数EL绑定失败案例
但尝试为期望字符串数组的extraParameters属性绑定CDI Bean时失败,代码如下:
@OpenIdAuthenticationMechanismDefinition( clientId = "${configBean.clientId}", clientSecret = "${configBean.clientSecret}", extraParameters = "${configBean.extraParameters}" ) public class MyBean { ... } @ApplicationScoped @Named public class ConfigBean implements Serializable { ... public String getClientId() { return clientId; } public String getClientSecret() { return clientSecret; } public String[] getExtraParameters() { return { "audience=abc", "team=def" }; } }
在Wildfly 27中运行该代码会抛出异常:
jakarta.enterprise.inject.spi.DefinitionException: OpenIdAuthenticationMechanismDefinition.extraParameters() value '${configBean.extraParameters}' is not of the format key=value
问题
我想请教:
- 如何使用EL设置
extraParameters参数? - 另外,我注意到存在后缀为expression的
extraParametersExpression参数(期望String类型),但也未找到用EL赋值的解决方案。
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

