2

私はJSPページに取り組んでいます。Spring フレームワーク、JSTL、Jquery を使用しています。いくつかの js コードと JSTL コードを混在させます。コードは次のとおりです。

これは私のSpringコントローラーです:

Contract contract = services.getContractInfo(contractNumber);
contract.addCustomer(customer);
model.addAttribute("contract", contract);

これは私のJavaスクリプトです:

<script language="javascript">
    $(document).ready(function(){
        var values = new Array();
        <c:forEach var="customer" items="${contract.customers}" varStatus="status">
            values.push("${customer.name}");   
        </c:forEach>

        alert(" VALUES => "+values[0]);
        ....
    });
</script>

アラートが表示されます"VALUES => undefined".

理解できない。どうしたの?

4

3 に答える 3

2

あなたが提供したこのコードは完璧に機能するはずです。唯一の可能性 values[0]= undefined は、${contract.customers} が空である可能性があるためです。以下のコードは、コレクションが空かどうかを調べるのに役立ちます

<script language="javascript">
    $(function(){
        var values = new Array();
        <c:if test="${empty contract.customers}">
           values.push("No customers Found"); 
        </c:if>         
        <c:forEach var="customer" items="${contract.customers}" varStatus="status">
            values.push("${customer.name}");   
        </c:forEach>
        alert(" VALUES => "+values[0]);

    });
</script>
于 2016-05-04T12:57:48.117 に答える
0

ドキュメントを準備する必要はないと思います(この特定のケースでは)。また、言語ではなくスクリプトの種類を設定してみてください。Collection を返す Contract クラスに getCustomers() メソッドがあると仮定します。

例えば

<script type="text/javascript">
    var values = [];
    <c:forEach var="customer" items="${contract.customers}" varStatus="status">
        values.push("${customer.name}"); 
    </c:forEach>
    alert(" VALUES => " + values[0]);
</script>
于 2013-08-02T10:45:37.950 に答える