如何在 SpEL 中转义值?

2022-09-03 13:45:55

我正在用XML编写一些SpEL语句,我无法让解析器确定何时需要转义字符。

我尝试了以下操作:

<... property="someProperty" value="#{ someBean.aMethodOnTheBean('st\'ring') }" />

但是,添加\'似乎无法转义该单引号,并且我不断收到解析器异常。

有没有办法转义这些值?


答案 1

文档中

“要将单个引号本身放在字符串中,请使用两个单引号字符。

expression = 'something = ''' + someMethod.getValue + ''''


答案 2

我修改为:

.... value="#{ someBean.aMethodOnTheBean("st'ring") }" 

这有效,我错误地记得我在使用双引号将字符串值输入SpEL函数之前遇到了问题。

以下是架构定义:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
       default-lazy-init="true"
       default-init-method="initialize">

XML 在 eclipse 中正确验证。然而,我的简化例子是无效的 - 我的道歉和很好的捕捉。我实际上是像这样设置值:

<bean id="someBean" class="someClass">
    <property name="someList">
        <list>
            <value>"#{ anotherBean.methodOnBean("some'String") }"</value>
        </list>
    </property>
</bean>

推荐