velocity.exception.ParseErrorException.在<未知模板&gt处遇到"<EOF>"。在<未知模板>处遇到"<EOF>",当#end后面跟着_时。

问题描述 投票:1回答:1

当评估一个速度模板时,我得到以下错误。

Encountered "<EOF>" at <unknown template>[line 1, column 170]
Was expecting one of:
    "[" ...
    "(" ...
    <RPAREN> ...
    <ESCAPE_DIRECTIVE> ...
    <SET_DIRECTIVE> ...
    "##" ...
    "\\\\" ...
    "\\" ...
    <TEXT> ...
    "*#" ...
    "*#" ...
    "]]#" ...
    <STRING_LITERAL> ...
    <END> ...
    <IF_DIRECTIVE> ...
    <ELSEIF_DIRECTIVE> ...
    <ELSE_DIRECTIVE> ...
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <WORD> ...
    <BRACKETED_WORD> ...
    <IDENTIFIER> ...
    <DOT> ...
    "{" ...
    "}" ...
    <EMPTY_INDEX> ...
    <DOT> ...

我正在评估的模板是这样的。

${fileName}_#if( $noticeType == 'typeA' )TypeAlpha#elseif( $noticeType == 'typeB' )TypeBeta#end_$date.format('yyyyMMdd', $myDate)

我需要整个字符串没有空格,并且遵循以下格式 fileName_TypeAlpha_20200423所以我的问题是 #end_. 下划线使velocity忽略了#end,所以它不能评估if else语句。

我怎样才能执行#if #elseif #end语句,并在后面紧跟一个#if #elseif #end语句。_ 没有空格?

谢谢。

java velocity
1个回答
2
投票

找到答案了。

我需要用大括号包住结尾,以区别于文本的其他部分。

#{end}_

所以我的模板是

${fileName}_#if( $noticeType == 'typeA' )TypeAlpha#elseif( $noticeType == 'typeB' )TypeBeta#{end}_$date.format('yyyyMMdd', $myDate)

请看最后 http:/people.apache.org~henningvelocityhtmlch05s03.html。

© www.soinside.com 2019 - 2024. All rights reserved.