1

我在我的类中创建一个数组,然后我将它返回给一个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?

4

3 回答 3

2

你得到了正确array的唯一问题是你正在打印数组,因此你得到了那个输出。如果您希望它以美化的方式打印,那么您需要覆盖 Menu 类中的 toString 方法。

至于 的用法array,您没有共享任何代码,但您可以放置​​一个循环来迭代该数组并确认您正在获取所需索引处的值。

于 2013-07-13T17:49:36.480 回答
2

您在这里直接打印数组对象:

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

由于数组是一个对象,它使用类中定义的toString()Object的默认实现来打印数组对象的内容。

Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符“@”和对象的哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

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>
于 2013-07-13T17:52:23.430 回答
0

用于<c:forEach>遍历数组

于 2013-07-13T17:49:41.730 回答