空值上的速度解析错误
Velocity parse error on a null value
我的速度模板有问题。
我必须显示某些产品的图片 url。
我以正确的方式设置了一个变量。无论如何,在某些情况下我没有这张图片,所以我必须隐藏图片并在模板中放置一个空白 space。
我这样写set变量:
#set ($variantUrl = ${#if(!$product.getOrderFormImage().getUrl()) $!product.getOrderFormImage().getUrl() #else $product.getOrderFormImage().getUrl() #end} )
但我得到一个解析错误:
Caused by: org.apache.velocity.exception.ParseErrorException:
Encountered "(" at
de.hybris.platform.commons.renderer.impl.VelocityTemplateRe
nderer[line 403, column 103] Was expecting:
...
我没有看到这一行有任何错误。有什么问题?
我不确定您是否可以在 #set
中嵌套 #if
#else
- 至少 Velocity user guide 中没有提到它。
当我使用您的原始表达式时,出现以下错误:
org.apache.velocity.exception.ParseErrorException: Encountered "#if" at ....
Was expecting:
<IDENTIFIER> ...
如果我重写使 #if
#else
成为顶级语句,例如:
#if( !$product.getOrderFormImage().getUrl() )
#set($variantUrl = $!product.getOrderFormImage().getUrl() )
#else
#set($variantUrl = $product.getOrderFormImage().getUrl() )
#end
这似乎可以满足您的要求,或者至少可以编译并且不会出错!它也更容易阅读和理解。
就个人而言,为了可读性,我会更进一步并使用 Velocity 的 shorthand notation 作为参考:
#if( !$product.orderFormImage.url )
#set($variantUrl = $!product.orderFormImage.url )
#else
#set($variantUrl = $product.orderFormImage.url )
#end
我的速度模板有问题。
我必须显示某些产品的图片 url。 我以正确的方式设置了一个变量。无论如何,在某些情况下我没有这张图片,所以我必须隐藏图片并在模板中放置一个空白 space。
我这样写set变量:
#set ($variantUrl = ${#if(!$product.getOrderFormImage().getUrl()) $!product.getOrderFormImage().getUrl() #else $product.getOrderFormImage().getUrl() #end} )
但我得到一个解析错误:
Caused by: org.apache.velocity.exception.ParseErrorException: Encountered "(" at de.hybris.platform.commons.renderer.impl.VelocityTemplateRe nderer[line 403, column 103] Was expecting: ...
我没有看到这一行有任何错误。有什么问题?
我不确定您是否可以在 #set
中嵌套 #if
#else
- 至少 Velocity user guide 中没有提到它。
当我使用您的原始表达式时,出现以下错误:
org.apache.velocity.exception.ParseErrorException: Encountered "#if" at ....
Was expecting:
<IDENTIFIER> ...
如果我重写使 #if
#else
成为顶级语句,例如:
#if( !$product.getOrderFormImage().getUrl() )
#set($variantUrl = $!product.getOrderFormImage().getUrl() )
#else
#set($variantUrl = $product.getOrderFormImage().getUrl() )
#end
这似乎可以满足您的要求,或者至少可以编译并且不会出错!它也更容易阅读和理解。
就个人而言,为了可读性,我会更进一步并使用 Velocity 的 shorthand notation 作为参考:
#if( !$product.orderFormImage.url )
#set($variantUrl = $!product.orderFormImage.url )
#else
#set($variantUrl = $product.orderFormImage.url )
#end