2016-12-16 64 views
1

FreeMarker支持Java 8中的可選值嗎?FreeMarker Java 8可選值支持

例如我有String ID,它的getter方法是這樣的:

public Optional<String> getId() { 
    return Optional.ofNullable(Id); 
} 

我如何在.ftl文件中引用它。看起來{data.id}找不到正確的可選值。但給我可選[1334586]

回答

2

那麼,Freemarker不應該知道可選或最好說它的動態類型,因此它適用於任何對象。

既然你打電話給$ {data.id},那只是在Optional上調用toString,這是完全預期的行爲。

如果你想在你的模板,併爲您希望使用Optional處理空值,你可以選擇設置一個默認值,如果爲空,所以將不再需要使用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> 

欲瞭解更多信息請查看Freemarker的docs。具體部分:處理缺失值和缺少值測試操作員。

如果你只是想在你的模板從Optional值:

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

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