我在代码中写的如下边这样:

Bean b= beanRepository.findById(id);
map.put("bean", b);

....

在freemarker中使用如下代码一直没能取到值

${bean.id?if_exists}

检查发现,Repository返回的并不是Bean对象,而是Optional,于是改成下边这样

Bean b= beanRepository.findById(id).orElse(new Bean());
map.put("bean", b);

....

这样子才终于能正常拿到值。

其它可能取不到值的情况

  • 属性没有getter方法
  • 对象是内部类的对象