freemarker文件无法读取java boolean类型数据
freemarker文件无法读取java boolean类型数据
用freemarker自动生成mapper.xml mybatis配置文件 但是在 <#if params.isPkey> 一直报 异常
严重: Error executing FreeMarker template
FreeMarker template error:
For "#if" condition: Expected a boolean, but this has evaluated to a method+sequence (wrapper: f.e.b.SimpleMethodModel):
==> params.islikeQuery [in template "mapperxml.ftl" at line 8, column 22]
----
Tip: Maybe using obj.something() instead of obj.something will yield the desired value
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if params.islikeQuery [in template "mapperxml.ftl" at line 8, column 17]
----
Java stack trace (for programmers):
----
代码如下:
<resultMap id="BaseResultMap" type=" ${entryClassPath?if_exists}.${entryName}">
<#list columnList as params>
<#if params.isPkey>
<id column="${params.fieldName}" property="${params.entryName}"/>
<#else>
<result column="${params.fieldName}" property="${params.entryName}"/>
</#if>
<result column="${params.fieldName}" property="${params.entryName}"/>
</#list>
</resultMap>
开始以为ftl不支持boolean类型 然后就用了下面的代码 发现还是报错
${params.isPkey?string('true','false')}
后来经过反复检查 检查实体对象封装的时候发现 在set get 时 java会自动的将 isPkey 字段会将生成set get方法时,
错误的代码:
public boolean isPkey() {
return isPkey;
}
public void setPkey(boolean isPkey) {
this.isPkey = isPkey;
}
发现 因为get set不规范,不能使用is 修改get方法就可以了
正确的代码:
public boolean getIsPkey() {
return isPkey;
}
public void setPkey(boolean isPkey) {
this.isPkey = isPkey;
}