1

申し訳ありませんが、java-noob のタグが表示されませんでした。

Spring で既存の安らかな API を使用しています。私は、それぞれが文字列を返すいくつかのユーティリティ メソッドを備えた新しい API を追加することを任されました。ここまでは順調ですね。すべてがうまくいっています。

文字列をオブジェクトとして返す単純なラッパーを追加したところ、ビルド/デプロイ/テストが可能になり、次のような応答が返されました

{ id: "12345" }

Accept ヘッダーを指定するとapplication/xml、次の例外が発生します。

org.springframework.web.HttpMediaTypeNotAcceptableException: 受け入れ可能な表現が見つかりませんでした

このパッケージの他のメソッドは、xml と json の両方で正常にシリアル化されるようです。コントローラー ベースで使用されているカスタム シリアライゼーション コードは見当たりません。また、それがどこで処理されているか (またはシリアライゼーションに関連しているのか) もわかりません。誰かがどこから探し始めるかを理解するのを手伝ってくれますか?

これが私の[簡略化された]コントローラーです:

@Controller
public class UtilController extends ControllerBase
{

    @XmlRootElement(name="util_response")
    public static class UtilResponse extends APIResponseBase
    {
        private String id;

        @XmlElement(name="id")
        public String getId()
        {
            return id;
        }

        public void setId(String id)
        {
            this.id = id;
        }
    }

    @RequestMapping(value = "/{pid}/util/output", method = RequestMethod.GET)
    @ResponseBody
    public UtilResponse output(HttpServletResponse httpResponse,
            @PathVariable("pid") int pid,
            @RequestParam(value = "id", required=true) String id) throws Exception
    {
            UtilResponse utilResponse = new UtilResponse();
            utilResponse.setId(id);
            return utilResponse;
    }
}

私も更新@RequestMappingして追加しようとしましたがproduces = "application/xml"(はい、これが実際に何をするのかまったくわかりません)、効果はありませんでした。

真剣に、私はこのすべての Java がどのように「機能する」か (貿易による .net dev) について本当に新しいので、もっと理解したいと思っています。何が何であるかはわかりませんJacksonが、私たちのプロジェクトではそれへの参照が見られず、他のすべてが機能しているようです。締め切りもあるので、うまくいくことだけが優先されることもあります。

4

1 に答える 1