2016-08-22 18 views
1

jsonオブジェクトリストをスプリングコントローラから返して見たいですが、空リストを返します! 問題を理解できません。 minutesControllerでアクティビティオブジェクトを作成し、jsonとして返します。しかし、jqueryを使用してフォームで取得できません。 localhost:8080/FitnessTracker5/activities.jsonを試してみると、ブラウザで正しい結果が得られます。 私のサーバがaddMinutes.jsp戻るjsonオブジェクトリストspring mvc controller

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 
    <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
    <html> 
    <head> 
     <title>Add Minutes Page</title> 
     <script type="text/javascript" src="/WEB-INF/pages/jquery-3.1.0.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(
       function(){ 
       $.getJSON('localhost:8080/FitnessTracker5/activities.json' , { 

        ajax:'true' 
        } 
        , 
        function(data){ 
        var html = '<option value="">please select one--</option>' 
        var len = data.length; 

        for(var i=0 ; i<len ;i++){ 
         html += '<option value="' + data[i].desc + '">' 
         +data[i].desc+ '</option>' ; 
        } 
        html +='</option>'; 
        $('#activities').html(html); 

        }); 
       }); 

     </script> 
    </head> 
    <body> 
    <h1>Add Minutes Excersisedddd:</h1> 


    Language:<a href="?language=en">English</a> | <a href="?language=fa">Persian</a> 
    <form:form commandName="exercise"> 

     <table> 
     <tr> 

      <td><h1><spring:message code="goal.text"/> </h1> </td> 
      <td> <form:input path="minutes"/></td> 
      <td> 
      <form:select id="activities" path="activity"></form:select> 
      </td> 

     </tr> 


     </table> 
    </form:form> 



    </body> 
    </html> 

activiity.java

public class Activity { 
    private String desc ; 
    public String getDesc() { 
     return desc; 
    } 

    public void setDesc(String desc) { 
     this.desc = desc; 
    } 


} 

MinutesController.java @Controller

public class MinutesController { 

    @RequestMapping(value = "/addMinutes") 
    public String addMinutes(@ModelAttribute("exercise") Exercise exercise){ 
     System.out.println("exercise" + exercise.getMinutes()); 
     System.out.println("exerciseeeee" + exercise.getActivity()); 
     return "addMinutes" ; 
    } 

    @RequestMapping(value = "/activities" , method = RequestMethod.GET) 
    public @ResponseBody List<Activity> findAllActivities(){ 
     System.out.print("ACCCCCCCCCCCCCCCCCCCCc"); 
    List<Activity> activities = new ArrayList<Activity>(); 

     Activity run = new Activity(); 
     run.setDesc("Run"); 
     activities.add(run) ; 

     Activity bike = new Activity(); 
     bike .setDesc("Bike"); 
     activities.add(bike) ; 

     Activity swim = new Activity(); 
     swim.setDesc("Swim"); 
     activities.add(swim) ; 

     return activities; 


    } 

    @RequestMapping(method=RequestMethod.GET, value ="/test") 
    public @ResponseBody Activity getMovie(){ 

     Activity activity =  new Activity(); 
     activity.setDesc("aaaaa"); 
     return activity; 
    } 
} 
+0

あなたのajaxコールで '.json'を使用する特別な理由は何ですか? –

+1

Javascriptでブレークポイントを試しましたか?あなたのajaxコールバックの "データ"の価値は何ですか? – marthursson

+0

@marthurssonそれは "jquery-3.1.0.js"を取得できないようです!私はクロムコンソールをチェックして、それはエラーが...私はそれを追加するために他の何かをしなければならない? – faraa

答えて

2

上記のコメントから、JQueryをロードできないという問題があると思われます。これは、ディスパッチャサーブレットが正しく構成されていないためです。 :)あなたは、アプリケーションからのjQueryを提供したい場合は、「静的リソースのSpring MVCを果たす」ためのgoogleすべき

<script type="text/javascript" src="//code.jquery.com/jquery-3.1.0.min.js"></script> 

をそしてurlhttp://を追加:あなたは代わりにCDNからjQueryのにアクセスしてみてください。

$.getJSON('http://localhost:8080/FitnessTracker5/activities.json' , { 
+0

ありがとうございました...しかし、今私はこのエラーをクロームで受け取ります:XMLHttpRequestはlocalhost:8080/FitnessTracker5/activities.json?ajax = trueをロードできません。 HTTP、データ、クロム、クロムなどのプロトコルスキームでのみサポートされています。 – faraa

+1

http:// ...を追加することで問題は解決しました。君は – faraa

0

使用@RestController GlassFishの

である代わりに@Controller

+0

ありがとうございます。問題はjqueruをロードしていることを理解しています。jqueryを追加している行のクロムコンソールにエラーが表示されます。 – faraa

+0

は全体の回答には関係しませんが、jspページを見ないようにコントローラを設定するには@ResponseBodyでメソッドに注釈を付ける必要もあります。 –

関連する問題