Java 8 FreeMarker Java 8可选值支持

Java 8 FreeMarker Java 8可选值支持,java-8,freemarker,optional,Java 8,Freemarker,Optional,FreeMarker是否支持Java8中的可选值 e、 g.我有字符串id,它的getter方法如下: public Optional<String> getId() { return Optional.ofNullable(Id); } public可选getId(){ 返回可选的可空值(Id); } 我将如何在.ftl文件中引用它。{data.id}似乎找不到正确的可选值。但是给了我可选的[1334586]好吧,Freemarker不应该知道可选的,或者最好说它是动态类型

FreeMarker是否支持Java8中的可选值

e、 g.我有字符串id,它的getter方法如下:

public Optional<String> getId() {
  return Optional.ofNullable(Id);
}
public可选getId(){
返回可选的可空值(Id);
}

我将如何在.ftl文件中引用它。{data.id}似乎找不到正确的可选值。但是给了我可选的[1334586]

好吧,Freemarker不应该知道可选的,或者最好说它是动态类型的,所以它适用于任何对象

由于您调用了${data.id},所以只需调用
toString
on
Optional
,这完全是预期的行为

如果要在模板中处理空值,并且要使用
可选
,则可以选择将默认值设置为空,这样就不需要使用
可选

    Synopsis: unsafe_expr!default_expr or unsafe_expr! or (unsafe_expr)!default_expr or (unsafe_expr)!
    Example: ${data.id!"No id."}
或者检查它是否存在:

<#if data?? && data.id??>
  Id found
<#else>
  Id not found
</#if>

${data.id.orElse('')}
${data.id.get()!''}