【发布时间】:2014-11-14 06:13:12
【问题描述】:
我有一个包含 google/Guava Optional 的容器对象,我想在 jsp 中访问这个 Optinal 的内容。
import com.google.common.base.Optional;
public class Container {
private Optional<User> user;
public Optional<User> getUser(){return this.user;}
}
public class User{
private String name;
public String getName() {return this.name;}
}
Optional 有一个方法get() 来获取内部对象。 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html#get%28%29
我已经尝试过(${container} 是Container 的一个实例):
<c:out value="${container.user.name}" />
<c:out value="${container.user.get.name}" />
<c:out value="${container.user..name}" />
它们都不起作用(Tomcat 7.42)。有没有人知道如何解决这个问题,无需向容器添加新属性 (getUser2(){return this.user.get();})?
【问题讨论】:
-
${container.user}将返回Optional<User>,因此之后您必须使用来自Optional的正确getter 来从User检索数据。 -
@Luiggi Mendoza:问题在于“propper”getter 形式
Optinal的名称为get! -
然后使用
${container.user.get().name},但是你应该验证你的Tomcat安装中的EL库是否支持这个。