1

私はSpringMVCを初めて使用します。jspページでajaxを使用して、別の選択ボックスの変更イベントで選択ボックスにデータを入力したいと思います。

jspページは次のようなものです。

    <c:url var="RatePlanOfClientURL" value="/ratePlansofUser.jav" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <link rel="stylesheet" href="Scripts/jquery-ui-1.8.16/themes/base/jquery-ui.css" type="text/css" /> 
    <link rel="stylesheet" href="Scripts/jquery-ui-1.8.16/themes/base/jquery.ui.autocomplete.css" type="text/css" />
      <script src="Scripts/jquery-ui-1.8.16/jquery-1.6.2.js"></script>
      <script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery-ui.js"></script> 
      <script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.core.js"></script>
      <script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.position.js"></script>
      <script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.widget.js"></script>
    <script type="text/javascript">
        window.scrollTo(0, 1);
    </script>

    <script type="text/javascript">
    $(document).ready(function() { 
              $("#parentClient").change(function(){
                  $.getJSON('${RatePlanOfClientURL}', {
                      clientId : $(this).val(),
                        ajax : 'true'
                    },
                    function(data) {
                                alert("hai");
                        var html = '<option value="">Select '+$("#parentClient").val()+'</option>';
                        var len = data.length;
                        for ( var i = 0; i < len; i++) {
                            html += '<option value="' + data[i].rateID + '">' + data[i].rateName
                                    + '</option>';
                        }
                        html += '</option>';


                    $('#ratePlanList').html(html);
                });
            });
        });

    </script>


<fieldset>
<div>
 <label> Parent Account</label>
                       <form:select id="parentClient" path="reseller.clientResellerParentId" class="addDropdown">
                                 <form:option value="0" label="Select Parent"></form:option> 
                                <form:options items="${ClientList}" itemValue="clientId" itemLabel="clientName"/>
                            </form:select>
</div>

<div>
<label >Rate Plan</label>
                           <form:select id="ratePlanList" path="reseller.resellerRateplan.ratePlanID" class="addDropdown">
                                <form:option value="0" label="Select RatePlan"></form:option> 
                                <form:options items="${RatePlanList}" itemValue="rateID" itemLabel="rateName"/>
                            </form:select>
                            <form:errors path="reseller.resellerRateplan.ratePlanID" cssStyle="color:red"></form:errors>
</div>
</fieldset>

そして私のコントローラークラスでは

@RequestMapping(value = "/ratePlansofUser.jav", method = RequestMethod.GET)
    public @ResponseBody List<RatePlanData> ratePlansForClient(
            @RequestParam(value = "clientId", required = true) Integer clientId,
            HttpSession session) 
    {
        System.out.println("Reached Controller for "+clientId);
        return ratePlanService.getRatePlanForClient(clientId);
    }

最後に、私が持っているデータベースコントローラークラス

 public List<RatePlanData> getRatePlanForClient(int id)
     {
        Criteria myCriteria = sessionfactory.getCurrentSession().createCriteria(RatePlanData.class);

        myCriteria.add(Restrictions.eq("clientID",id ));  

        return myCriteria.list();
     }

親クライアントの選択ボックスを変更するたびに、コントローラーメソッドが呼び出しています(System.out.println("Reached Controller for "+clientId);印刷中です)。また、子を持たない親を選択すると、そのスクリプトのアラートボックスが表示されます。しかし、子を持つ親を呼び出すと、それは機能しません(そのアラートボックスは表示されませんがSystem.out.println("Reached Controller for "+clientId);、コンソールで印刷されます)。

誰かが問題の可能性を指摘できますか?

前もって感謝します..

編集..firebugを使用してスクリプトのajax関数の変数データを確認しました。子を持たない親を選択すると、データの値が「[]」と表示されます。また、関数(データ)に遭遇すると、すべてのスクリプトをスキップします。誰かアイデアがありますか?

4

1 に答える 1

0

まず、サービス呼び出しが例外をスローしないことを確認する必要があります。第二に、例外がない場合は、Spring タグによって生成された Id / 要素名が欠落している可能性があります (Spring タグ lib を使用していると仮定します)。

于 2012-07-18T04:27:17.380 に答える