0

WebアプリケーションからWebサービスとの間でデータを転送する際に問題が発生しました。

だから私はSpring、Hibernate、Jacksonを使ったJavaJAX-RSWebサービスを持っています。これまで、JSON-Pを使用してWebサービスからデータを取得してきましたが、POST呼び出しを行う必要があるため、CORSに切り替えようとしています。

JSON-Pを使用した古いコード:

@GET
@Path("/getUsers")
@Produces(MediaType.APPLICATION_JSON)
public ResponseEntity getUsers(@QueryParam("callback") String callback) {
    Set<User> list = null;
    list = userBo.getUsers();
    if (list != null) {
        return callback + "(" + list.toString() + ");";
    } else {
        return null;
    }
}

私は次のようにして応答のヘッダーを変更しようとしています。

@GET
@Path("/getUsers")
@Produces(MediaType.APPLICATION_JSON)
public ResponseEntity getUsers(@QueryParam("callback") String callback) {
    Set<User> list = null;
    list = userBo.getUsers();
    HttpHeaders headers = new HttpHeaders();
    headers.add("Access-Control-Allow-Origin", "*");
    headers.add("Access-Control-Allow-Methods", "GET, OPTIONS, POST");
    headers.add("Access-Control-Allow-Headers", "Content-Type");
return new ResponseEntity(list.toString(), headers, HttpStatus.OK);
}

しかし、JacksonはResponseEntity全体をJSON文字列に変換します。ジャクソンにすべてを変換させずにヘッダーを変更する方法を知っている人はいますか?

ありがとう!

4

2 に答える 2

0

Responseの代わりに使用してResponseEntityください。

于 2012-05-23T10:29:19.170 に答える
-1

通常のHTTPフィルターを使用してこれを行うことができます。

public class AddHeaderFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

            HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper((HttpServletResponse)response)
            chain.doFilter(request, wrappedResponse);
            wrappedResponse.addHeader("myheaderName", "myHeaderValue");

        }


}
于 2012-05-23T10:32:20.657 に答える