如何在 XML 中编写嵌套的 SpEL 表达式
How to write nested SpEL expression in XML
我正在尝试使用如下所示的 SpEL 表达式,但无法正常工作。
<intercept-url pattern="/myurl"
access="#{'${perm.status}' == 'secured' ? 'T(XXX.YYY.PermissionsConstants).PERMISSION_NAME' :
'IS_AUTHENTICATED_ANONYMOUSLY'}"/>
如果我用 VIEW_PERM
之类的常量替换 T(XXX.YYY.PermissionsConstants).PERMISSION_NAME
那么它就可以工作了。除了不变的部分,其他一切都工作正常。我也尝试过 #{T(XXX.YYY.PermissionsConstants).PERMISSION_NAME}
但没有成功。
请建议我正确的语法。
你应该像 #{expression}
那样编写 SpEL。
你的情况应该是
<intercept-url pattern="/myurl"
access="#{'${perm.status}' == 'secured' ? T(XXX.YYY.PermissionsConstants).PERMISSION_NAME :
'IS_AUTHENTICATED_ANONYMOUSLY'}"/>
不要用引号括起 T(XXX.YYY.PermissionsConstants).PERMISSION_NAME
,而 '${perm.status}'
或任何 String
需要用引号括起来。
假设您需要在 java class 中编写相同的表达式,那么您会这样写:
@Value("${perm.status}")
String permStatus;
// Inside a method
String expressionValue = == permStatus == "secured" ? PermissionsConstants.PERMISSION_NAME : "IS_AUTHENTICATED_ANONYMOUSLY";
同样需要写在#{}
里面,稍作改动:
用单引号代替双引号
Class 名称应替换为完全限定的 class 名称
在访问 class.
中的任何常量之前,用 T()
包装完全限定的 class 名称
希望对您有所帮助!
我正在尝试使用如下所示的 SpEL 表达式,但无法正常工作。
<intercept-url pattern="/myurl"
access="#{'${perm.status}' == 'secured' ? 'T(XXX.YYY.PermissionsConstants).PERMISSION_NAME' :
'IS_AUTHENTICATED_ANONYMOUSLY'}"/>
如果我用 VIEW_PERM
之类的常量替换 T(XXX.YYY.PermissionsConstants).PERMISSION_NAME
那么它就可以工作了。除了不变的部分,其他一切都工作正常。我也尝试过 #{T(XXX.YYY.PermissionsConstants).PERMISSION_NAME}
但没有成功。
请建议我正确的语法。
你应该像 #{expression}
那样编写 SpEL。
你的情况应该是
<intercept-url pattern="/myurl"
access="#{'${perm.status}' == 'secured' ? T(XXX.YYY.PermissionsConstants).PERMISSION_NAME :
'IS_AUTHENTICATED_ANONYMOUSLY'}"/>
不要用引号括起 T(XXX.YYY.PermissionsConstants).PERMISSION_NAME
,而 '${perm.status}'
或任何 String
需要用引号括起来。
假设您需要在 java class 中编写相同的表达式,那么您会这样写:
@Value("${perm.status}")
String permStatus;
// Inside a method
String expressionValue = == permStatus == "secured" ? PermissionsConstants.PERMISSION_NAME : "IS_AUTHENTICATED_ANONYMOUSLY";
同样需要写在#{}
里面,稍作改动:
用单引号代替双引号
Class 名称应替换为完全限定的 class 名称
在访问 class.
中的任何常量之前,用
T()
包装完全限定的 class 名称
希望对您有所帮助!