2014-09-19 66 views
2

我有一个容器对象,其中包含一个谷歌/番石榴Optional,我想访问这个Optinal在jsp中的内容。如何通过jsp中的get()方法访问对象?

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} INS的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();})?

+0

'$ {container.user}'将会返回'可选',所以以后你将不得不使用来自'可选'的合适的获取器从'用户'中检索数据。 – 2014-09-19 15:36:42

+1

这可能是有用的:http://download.csdn.net/detail/item/detail.php?f=2&id=2121166/can-jsp-el-do-direct-attribute-access – 2014-09-19 15:42:53

+0

@Luiggi门多萨:问题是,“propper”getter形式'Optinal'有名字'get'! – Ralph 2014-09-19 16:28:36

回答

5

由于索蒂里奥斯Delimanolis

以来的Servlet 3.0/JSP 2.2可以使用

<c:out value="${container.user.get().name}" /> 
+2

这也是我评论中的代码:P – 2014-09-19 16:40:55

相关问题