2014-09-19 73 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

相關問題