Freemarker语法中怎么为这个:${sys.getFormulaValue("排产数量")!""},去除取值的小数
时间: 2023-07-21 21:11:49 浏览: 132
为了去除`${sys.getFormulaValue("排产数量")!""}`中的小数部分,你可以使用Freemarker的内建函数`?int`或者`?string('#')`。
使用`?int`函数:
```
${sys.getFormulaValue("排产数量")?int}
```
使用`?string('#')`函数:
```
${sys.getFormulaValue("排产数量")?string('#')}
```
这两种方式都可以将`${sys.getFormulaValue("排产数量")}`的值转换为整数形式,并去除小数部分。选择其中一种方式根据你的需求来决定。
相关问题
Freemarker模板 <#if 判断相等 ${field.propertyType!}
你的问题不太完整,不过我猜测你想问的是Freemarker模板中如何进行相等判断以及如何获取对象的属性类型。那么我来回答一下吧。
在Freemarker模板中,可以使用<#if>指令来进行判断,语法如下:
```
<#if condition>
...
<#elseif condition2>
...
<#else>
...
</#if>
```
其中,condition可以是任何表达式,如果表达式的值为true,则执行<#if>指令内部的代码块;如果表达式的值为false,则执行<#elseif>或<#else>指令内部的代码块。如果没有<#elseif>或<#else>指令,则<#if>指令结束。
如果你想判断某个对象的属性类型,可以使用?class属性,例如:
```
${field.propertyType?class}
```
这样就可以获取field对象的propertyType属性的类型了。需要注意的是,如果field对象为null,上述语句会抛出异常,因此最好加上null判断,例如:
```
<#if field.propertyType?has_content>
${field.propertyType?class}
</#if>
```
这样就可以避免NullPointerException了。
freemarker.core.ParseException: Syntax error in template "template1811891664636092142.ftl" in line 62, column 28: You can't use ${...} (an interpolation) here as you are already in FreeMarker-expression-mode. Thus, instead of ${myExpression}, just write myExpression. (${...} is only used where otherwise static text is expected, i.e., outside FreeMarker tags and interpolations, or inside string literals.)
这个错误提示是因为你在Freemarker模板中使用了${...}语法,但是这里已经处于Freemarker表达式模式下了。因此,你需要将${...}替换为表达式本身,例如:
原始代码:
```
<#if !field.keyFlag && ${field.propertyType!} == "Date">
```
修改后的代码:
```
<#if !field.keyFlag && field.propertyType! == "Date">
```
这样就可以避免该错误了。需要注意的是,如果你确实需要在Freemarker表达式模式下使用${...}语法,可以使用\${...}转义符进行转义,例如:
```
${'\${'}myExpression${'\}'} // 输出 ${myExpression}
```
但是,这种写法比较繁琐,不建议过多使用。