springmvc+json
1.私のspringmvc demoを書くとき、フロントに関連情報を返すため@ResponseBodyを設定しましたが、オブジェクトをjson形式に変換するにはxmlファイルに配置していないので、以下のエラーを報告します.
HttpMediaTypeNotAcceptableException: Could not find acceptable representation.
「史上最速のjson」と呼ばれたJacksonのデフォルト設定を採用しました
2.運転後エラー:Could not find acceptable representation
なぜならjacksonの2つのパッケージを忘れたからです:jackson-core-asl-1.9.13とjackson-mapper-asl-1.9.13
3.実行後にエラーが発生しました:要素'mvc:annotation-driven'は、このタイプのコンテンツタイプが空であるため、文字または要素情報項目[サブレベル]を含まない必要があります.私のxmlの中のmvcネーミングスペースの中でxsdバージョンが3.0であることを発見しましたが、私は4.0を使っています.その後、このバージョンのシーケンス番号を消して、デフォルトのバージョンは何ですか?試してみると、デフォルトの最新のようです(myeclipseでリンクを開いてxsdファイルを表示できます)
4.ネット上で资料を探している时、fastjsonに関する文章を见て、见てみると、ネット上でfastjsonに対する賛否が异なっていることがわかりました.けなすのはfastjsonがアリババの温少が書いたもので、関連文書が少なく、問題が解決するのは難しい.でもアリババへの執着でfastjsonを使いました
コメント:
@ResponseBody:コンテンツまたはオブジェクトをHTTP応答本文として返し、@ResponseBodyを使用するとビュー処理部がスキップされ、適切なHttpMessageConverterが呼び出され、戻り値が出力ストリームに書き込まれます.
日付フォーマットのデータをフロントに転送する場合、fastjsonはデフォルトでDateタイプをLong型に変換するので、バックグラウンドDateタイプの数がフロントに転送されるエラー解決方法:1.ローカル解決-注記を追加します.すなわち、対応するフィールドに以下の注記@JSOnField(format="yyyyy-MM-dd HH:mm:ss")を加え、fastjsonがフロントにjsonを出力すると、設定したフォーマットが保持されます.しかし、これは、Dateタイプのフィールドごとにこのような注釈を付けることに注意してください.グローバル解決-fastjsonのconverterを書き換えるのと同じように、xmlファイルで自分で定義したclassを呼び出す注釈の処理クラスを書きます.3.グローバル解決-DateとString変換クラスを書き、バックグラウンドでデータをStringに変換してからフロントに転送します.フロントstringが伝わってきたらDateにします.そうすれば間違いはありません.
HttpMediaTypeNotAcceptableException: Could not find acceptable representation.
「史上最速のjson」と呼ばれたJacksonのデフォルト設定を採用しました
<!-- spring mvc -->
<mvc:annotation-driven>
<!-- JSON -->
<mvc:message-converters>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value> <!-- IE JSON -->
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2.運転後エラー:Could not find acceptable representation
なぜならjacksonの2つのパッケージを忘れたからです:jackson-core-asl-1.9.13とjackson-mapper-asl-1.9.13
3.実行後にエラーが発生しました:要素'mvc:annotation-driven'は、このタイプのコンテンツタイプが空であるため、文字または要素情報項目[サブレベル]を含まない必要があります.私のxmlの中のmvcネーミングスペースの中でxsdバージョンが3.0であることを発見しましたが、私は4.0を使っています.その後、このバージョンのシーケンス番号を消して、デフォルトのバージョンは何ですか?試してみると、デフォルトの最新のようです(myeclipseでリンクを開いてxsdファイルを表示できます)
4.ネット上で资料を探している时、fastjsonに関する文章を见て、见てみると、ネット上でfastjsonに対する賛否が异なっていることがわかりました.けなすのはfastjsonがアリババの温少が書いたもので、関連文書が少なく、問題が解決するのは難しい.でもアリババへの執着でfastjsonを使いました
<!-- spring mvc -->
<mvc:annotation-driven>
<!-- JSON -->
<mvc:message-converters>
<!-- class -->
<bean id="jsonConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><!-- class -->
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value> <!-- IE JSON -->
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
コメント:
@ResponseBody:コンテンツまたはオブジェクトをHTTP応答本文として返し、@ResponseBodyを使用するとビュー処理部がスキップされ、適切なHttpMessageConverterが呼び出され、戻り値が出力ストリームに書き込まれます.
日付フォーマットのデータをフロントに転送する場合、fastjsonはデフォルトでDateタイプをLong型に変換するので、バックグラウンドDateタイプの数がフロントに転送されるエラー解決方法:1.ローカル解決-注記を追加します.すなわち、対応するフィールドに以下の注記@JSOnField(format="yyyyy-MM-dd HH:mm:ss")を加え、fastjsonがフロントにjsonを出力すると、設定したフォーマットが保持されます.しかし、これは、Dateタイプのフィールドごとにこのような注釈を付けることに注意してください.グローバル解決-fastjsonのconverterを書き換えるのと同じように、xmlファイルで自分で定義したclassを呼び出す注釈の処理クラスを書きます.3.グローバル解決-DateとString変換クラスを書き、バックグラウンドでデータをStringに変換してからフロントに転送します.フロントstringが伝わってきたらDateにします.そうすれば間違いはありません.