0

JSPとSpringで問題が発生しています。オブジェクトの配列をモデルからビュー(JSP)に渡そうとしています。

これはコントローラー部分の私のコードです:

@RequestMapping(value = "/clientes.html")
public ModelAndView handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException  {

    Map<String, Object> myModel = new HashMap<String, Object>();
    myModel.put("arrClients", this.clientManager.getClients());
    myModel.put("clientNames", this.clientManager.getNames());
    return new ModelAndView("clients", "model", myModel);
}

JSPファイルでは、jstl、igを使用して「arrClients」にアクセスできます。

    <c:forEach items="${model.arrClients}" var="client">
        <div id="newClient">
            <p>
                <c:out value="${client.name}" />
                <i><c:out value="${client.surname}" /></i>
            </p>
        </div>
    </c:forEach>

このコードは機能していますが、この配列にアクセスして、jQuery変数に格納したいと思います。

そこで、他の配列(文字列)にアクセスしようとすると、それは機能し、コンソールにメッセージが表示されます。

$(function() {
    var clientNames = ${model.clientsNames};
            console.info('it Works!!');

}

しかし、他のアレイにアクセスしようとすると

$(function() {
    var clients = ${model.arrClients};
            console.info('it Works!!');
}

このアレイにアクセスできず、コンソールメッセージも取得できませんでした。jQueryを使用してJSPファイル内のオブジェクトの配列にアクセスする方法を知っている人はいますか?

4

1 に答える 1

0

JSP の出力は、自分で入力したかのように JS で解釈されることに注意してください。したがって、あなたの行:

var clients = ${model.arrClients};

の内容が${model.arrClients}だっ["foo", "bar"]たらOKだけど、こんな感じだったらOKじゃないfoo, bar。Javascript デバッグ ツール (Firebug、Chrome コンソールなど) を使用して、コンソールのエラー ログを確認し、ページのその行の実際の HTML 出力も確認します。

2 番目が表示されないという事実はconsole.info()、JSTL 式が JS 構文エラーを引き起こしたことを示唆しています。

編集:gigadotが指摘したように、リストや配列のようなJavaオブジェクトを取得してJSPで宣言することはできません-toString()表現を取得するだけで、通常は必要なものではありません。<c:forEach>同様のコードをブロックで使用し、各要素を一度に 1 つずつ JS 配列に追加する必要があります(例: を使用.push())。

于 2012-09-13T00:14:10.523 に答える