use*_*651 5 freemarker optional java-8
FreeMarker 是否支持 Java 8 中的 Optional 值?
例如,我有 String id,它的 getter 方法是这样的:
public Optional<String> getId() {
return Optional.ofNullable(Id);
}
Run Code Online (Sandbox Code Playgroud)
我将如何在 .ftl 文件中引用它。似乎 {data.id} 找不到正确的 Optional 值。但给了我 Optional[1334586]
好吧,Freemarker 不应该知道 Optional 或者最好说它是动态类型的,因此它适用于任何对象。
既然你调用$ {} data.id它只是电话toString上Optional这完全是预期的行为。
如果您想在模板中处理空值并为此使用Optional,您可以选择设置默认值如果为空,Optional则不需要使用:
Synopsis: unsafe_expr!default_expr or unsafe_expr! or (unsafe_expr)!default_expr or (unsafe_expr)!
Example: ${data.id!"No id."}
Run Code Online (Sandbox Code Playgroud)
或者检查它是否存在:
<#if data?? && data.id??>
Id found
<#else>
Id not found
</#if>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看 Freemarker文档。具体部分:处理缺失值和缺失值测试运算符。
如果您只想从Optional模板中获取值:
${data.id.orElse('')}
Run Code Online (Sandbox Code Playgroud)
或者
${data.id.get()!''}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |