Javaプロパティファイルでハッシュ記号(#
)をエスケープするにはどうすればよいですか。Javaプロパティ:#(ハッシュ)をエスケープする方法
Javaプロパティファイルを使用する国際化フレームワークがあります。
numberという列があり、そのヘッダーを#
にします。これは...
number=#
...は動作しません。
Javaプロパティファイルでハッシュ記号(#
)をエスケープするにはどうすればよいですか。Javaプロパティ:#(ハッシュ)をエスケープする方法
Javaプロパティファイルを使用する国際化フレームワークがあります。
numberという列があり、そのヘッダーを#
にします。これは...
number=#
...は動作しません。
この1つは任意のエスケープ文字なしで動作するはずです:
number=#
は、単にコードを使用して小さなテストをした....
prop.load(new FileInputStream ("./res/app.properties"));
System.out.println("Property: " +prop.getProperty("Number"));
...とプロパティファイル(大文字/小文字に注意してください。 ):
Number=#
Text=test
結果:
Property: #
あなたのスペルや大文字/小文字を確認してください。
thisまたはthat one(Javaドキュメントもリンクしています)をご覧ください。
p.s.:必須ではありませんが、Unicodeシーケンス:\u0023
を試すこともできます。
乾杯!
次のような場合(動作しません)に適切にエスケープする方法を探すとき、私はこの質問を見つけた:それはエスケープ必要この場合
zendesk.ticket.subject.prefix=#{{ticket.id}}
、そうでない場合は、次の例外が発生します。
を Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'createTicketService' defined in file [/Users/***]: Unsatisfied dependency expressed through constructor parameter 6; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ... 64 common frames omitted Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:164) at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1448) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1088) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ... 78 common frames omitted Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:226) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:81) at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:51) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120) at org.springframework.expression.spel.ast.InlineList.getValueInternal(InlineList.java:95) at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:131) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:297) at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:105) at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:42) at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161) ... 83 common frames omitted
ザ/溶液(WORKS)#{'#'}
端結果で使用することであろう。
zendesk.ticket.subject.prefix=#{'#'}{{ticket.id}}
javaなので、コードではハッシュ( '#')を '\\#'に置き換える必要があります。ダブルスラッシュに注意してください。あるいは、 '#'を '\\ u0023'に置き換えることもできます。 – Sabin