2010-11-29 8 views
7

私はいくつかのSpEL文をXMLで書いています。私は、文字をエスケープする必要があるかどうかを判断するためにパーサを得ることができません。SpELでどのように値をエスケープしますか?

私は次のことをしようとしました:

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

しかし\」に追加することは、単一引用符と私はパーサー例外を受信し続けることを脱出していないようです。

これらの値をエスケープする方法はありますか?

+1

#{someBean.aMethodOnTheBean(T(org.apache.commons.lang.StringEscapeUtils).escapeJavaScript( "ad'sfは"))}機能しますが、 – Scott

+0

ニースの試みは非常にきれいではありません! BTWでは、そのアプローチは、[式テンプレートセクション](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-templating)の例で文書化されています。 – falsarella

+0

また、これは[spring property placeholder](http://www.javacodegeeks.com/2013/01/spring-property-placeholder-configurer-a-few-not-so-obvious-)を使用している人のオプションかもしれません。 options.html)(ただし、その状況で適切に使用する方法はわかりませんでしたので、 '.properties'ファイルで直接値をエスケープしてしまいました)。 – falsarella

答えて

15

:私は実際にこのような値を設定しています

「 文字列を使用して2つの引用符 文字を単一引用符自体を置くために。」

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

0

は私がに変更:この作品

.... 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は日食に適切に検証します。

は、以下のスキーマ定義です。しかし私の単純化された例は有効ではありません - 私の謝罪と良いキャッチ。 documentationから

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

SOのコンテンツが何とか壊れていますか、間違っていませんか?私はかなり確信しています: ''は有効なXMLではありません。 –

0

FWIW、SPELは、バージョン3.2の二重引用符をサポートしています。 SPR-9620

関連する問題