2013-07-13 59 views
1

我在我的類中創建了一個數組,然後將它返回給一個jsp。奇怪的類數組問題 - 無法在jsp中顯示

數組代碼:

private String[] appNames = new String[50]; 


    public String[] getAppNames() { 
     return appNames; 
    } 


    public void setAppNames(String[] appNames) { 
     this.appNames = appNames; 
    } 

在我的JSP中,我試圖證明它是這樣的:

<% 
String username = session.getAttribute("username").toString(); 
Menu val = new Menu(username); 
    System.out.println(val.getAppNames()); 

%> 

什麼我得到的是:

[Ljava.lang.String;@7022c24e 

我很確定我錯過了一些小東西。我想我不能爲類中的數組創建getter和setter,但我仍然是java初學者。是否有可能在我的jsp中獲取數組的值,或者我必須通過ajax調用一個servlet?

回答

2

您正在獲得正確的array唯一的問題是您正在打印數組,因此您正在獲取該輸出。如果你想以美化的方式打印它,那麼你需要重寫Menu類中的toString方法。

就使用array而言,您沒有共享過任何代碼,但是您可以放置​​一個循環來遍歷該數組,並確認您正在獲取所需索引處的值。

2

您直接打印這裏的數組對象:

System.out.println(val.getAppNames()); 

由於數組是一個對象,它使用在Object類打印的內容定義的toString()默認實現數組對象。

Object類的toString方法返回一個由其中的對象是一個實例,該符號字符'@」的類的名稱的字符串,和的哈希碼的無符號十六進制表示法目的。換句話說,該方法返回一個字符串相等的值。

的getClass()的getName()+ '@' + Integer.toHexString(hashCode()方法)

因此你這樣的輸出。

如果您需要將其輸出到控制檯,您可以使用Arrays#toString()方法:

System.out.println(Arrays.toString(val.getAppNames())); 

我想,也許,你希望在網頁中顯示它。您可以使用JSTL forEach

<c:forEach var="element" items="yourArrayObject"> 
    Item : <c:out value="${element}"/> 
</c:forEach> 
+0

+1但是這種出現這樣往往應該有一個選項,關閉的問題,因爲「關於Java數組的另一個問題‘未正確打印’ - 使用Arrays.toString()」 – Bohemian