単純な Spring Controller から JSON を受信するのに大きな問題がありますが、他の多くのチュートリアルや公式の春のブログでさえもチェックしましたが、違いは見つかりませんでした。助けてください。
したがって、私のプロジェクトの依存関係は次のとおりです。
- spring-context 3.2.2 リリース
- spring-web 3.2.2 リリース
- spring-webmvc 3.2.2 リリース
- 春テスト 3.2.2 リリース
- ジャント 4.10
- サーブレット API 2.5
- 大気ランタイム 1.1.0 RC4
- logback クラシック 1.0.13
- libthrift 0.9.0
- ジャクソン-マッパー-asl 1.9.12
- ジャクソン-コア-asl 1.9.12
私のコントローラーは非常にシンプルで、ランダムな UUID を生成して返すだけです。次のようになります。
@Controller
public class SimpleController {
@RequestMapping(value="/new", method=RequestMethod.GET)
public @ResponseBody SimpleResponse new() throws JsonGenerationException, JsonMappingException, IOException {
SimpleResponse sr = new SimpleResponse();
sr.setId(UUID.randomUUID().toString());
return sr;
}
}
モデルは単純な POJO のようなものです
public class SimpleResponse {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
構成はこのように行われます
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<display-name>SimpleTest</display-name>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
</web-app>
と
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="de.tum.ibis.wsc" />
</beans>
それがサーバー側です。クライアント側には、jQuery コードが 1 行だけの HTML ページがあります。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery.js"></script>
<script>
$(document).ready(function() {
$.getJSON("http://localhost:8080/Frontend/app/new", function(data) { console.log("it works"); });
});
</script>
</head>
<body>
</body>
</html>
今私が読んだすべてによると、これはうまくいくはずですが、私にはうまくいきません。ブラウザで localhost:8080/Frontend/app/new を直接呼び出すと、次のようなものが得られます: {"id":"b46b8d67-5614-44ed-90ef-d2da14d260f6"} と Firebug は、サーバーからの応答ヘッダーがは
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(7.6.5.v20120716)
content-type は問題ないはずです。さて、jquery ajax呼び出しを実行すると、jquery.jsで「JSON.parse:予期しないデータの終わり」というエラーが発生し、その理由がわかりません。誰かが私を助けてくれることを願っています。ありがとう!
- - - アップデート - - -
Firebug: jQuery エラー
Firebug: 私が得るすべて
Firebug:これは、URLに直接アクセスした場合に得られるものです