如何将此行从Velocity转换为FreeMarker?

时间:2015-11-24 10:05:38

标签: java velocity freemarker

我想将此行从Velocity转换为Freemarker:

#set ($valid_portlet_description = $validator.isNotNull($portlet_description) 
&& $portlet_description.indexOf('javax.portlet.description') == -1)

我尝试将代码更改为:

<#assign valid_portlet_description = validator.isNotNull(portlet_description) 
&& portlet_description?index_of("javax.portlet.description") == "-1" />

但我得到以下错误:

  

freemarker.template.TemplateException:唯一合法的比较是   两个数字,两个字符串或两个日期之间。左手操作数是   freemarker.template.SimpleNumber右手操作数是a   freemarker.template.SimpleScalar

1 个答案:

答案 0 :(得分:1)

该消息抱怨这句话:

SOAP::Data->type('string')->name('Desc')->value( 'Test'),

它表示您有不同的类型:左侧的数字,但右侧是portlet_description?index_of("javax.portlet.description") == "-1" (在Freemarker条款中只是SimpleScalar)。要解决此问题,您应该删除引号:

String