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

私は何か小さなものを見逃していると確信しています。クラスで配列のゲッターとセッターを作成することはできないと思いますが、私はまだ Java の初心者です。jsp で配列の値を取得することは可能ですか、それとも ajax でサーブレットを呼び出す必要がありますか?

4

3 に答える 3

2

唯一の問題arrayは、配列を印刷しているため、その出力を取得していることです。美しく印刷したい場合は、Menu クラスで toString メソッドをオーバーライドする必要があります。

の使用に関してはarray、コードを共有していませんが、ループを配置してその配列を反復処理し、目的のインデックスで値を取得していることを確認できます。

于 2013-07-13T17:49:36.480 に答える
2

ここで配列オブジェクトを直接印刷しています:

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

array は object であるため、クラスで定義されたtoString()のデフォルトの実装を使用して、配列オブジェクトの内容を出力します。Object

クラス Object の toString メソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字 `@'、およびオブジェクトのハッシュ コードの符号なし 16 進数表現で構成される文字列を返します。つまり、このメソッドは次の値に等しい文字列を返します。

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 に答える