Hello,
I'am having problems using Double type parameters in late binding, using it as part of a String.
The stacktrace looks like:Code:<beans:bean id="testTasklet" class="test.Testsklet" scope="step"> <beans:property name="concString" value="Test value: string: #{jobParameters[pString]}, double: #{jobParameters[pDouble]}"/> </beans:bean>
Digging in the class org.springframework.batch.core.scope.util.Placehol derTargetSource$PlaceholderStringValueResolver I've noticed that this class don't check for java.lang.Double paramsCode:10:58:40,952 ERROR main AbstractStep:213 - Encountered an error executing the step java.lang.IllegalStateException: Cannot bind to partial key Test value: string: #{jobParameters[pString]}, double: #{jobParameters[pDouble]} at org.springframework.batch.core.scope.util.PlaceholderTargetSource$PlaceholderStringValueResolver.replacePlaceholders(PlaceholderTargetSource.java:436) at org.springframework.batch.core.scope.util.PlaceholderTargetSource$PlaceholderStringValueResolver.resolveStringValue(PlaceholderTargetSource.java:405) at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:265) at org.springframework.batch.core.scope.util.PlaceholderTargetSource$PlaceholderBeanDefinitionVisitor.resolveValue(PlaceholderTargetSource.java:334) at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:142) at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:82) at org.springframework.batch.core.scope.util.PlaceholderTargetSource.getTarget(PlaceholderTargetSource.java:184) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
Maybe we need to add something likeCode:Line 430: boolean replaced = replaceIfTypeMatches(result, first, next, key, String.class, typeConverter); replaced |= replaceIfTypeMatches(result, first, next, key, Long.class, typeConverter); replaced |= replaceIfTypeMatches(result, first, next, key, Integer.class, typeConverter); replaced |= replaceIfTypeMatches(result, first, next, key, Date.class, typeConverter);
I will need some help here. I don't know how workaround this problem.Code:replaced |= replaceIfTypeMatches(result, first, next, key, Double.class, typeConverter);
Thank you very much.


Reply With Quote