exclude properties in json result
struts-json-pluginを参照.XX.xx.jar.その中のjson-pluginを導入します.xml、userのpackageはjson-defaultを継承します.json interceptorを導入し、以下のようにします.
JSOnInterceptorのソースコードを見てみると、noCacheとexcludeNull Propertiesのプロパティがありますが、ここではこの2つのパラメータを設定するのは無効です.
json resultにこの2つのパラメータを設定する場合は、json result typeで設定します.
json resultでデータをシーケンス化する場合、シーケンス化を必要としないデータがある場合があります.resultで構成できます.
ここでseriesSetはcategoryオブジェクトの1つのSet属性であり、categoryList全体をフィルタするseriesSet構成に注意してください.
補足:最後のexcludePropertiesの設定については、hibernateでone-to-many lazy loading=trueを構成していましたが、consoleで印刷されたsqlはlazy loadではないことを示しており、フロントでも「怠惰ロード」データが見られ、その後コードを追跡し、DAO層でクエリーする際、「怠惰データ」はクエリーされませんでしたが、jsonでデータをシーケンス化する際、それらの「怠惰データ」もシーケンス化されます.だからconsoleの中で大量のsqlを走った.フロントでこれらのデータが不要な場合は、excludePropertiesを設定し、パフォーマンスを向上させる必要があります.
参考資料:http://struts.apache.org/release/2.1.x/docs/json-plugin.html
<interceptors>
<interceptor-stack name="ecsStack">
<interceptor-ref name="defaultStack">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="json"><param name="contentType">application/json;charset=utf-8</param></interceptor-ref>
</interceptor-stack>
</interceptors>
JSOnInterceptorのソースコードを見てみると、noCacheとexcludeNull Propertiesのプロパティがありますが、ここではこの2つのパラメータを設定するのは無効です.
json resultにこの2つのパラメータを設定する場合は、json result typeで設定します.
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult">
<param name="noCache">true</param>
<param name="excludeNullProperties">true</param>
</result-type>
</result-types>
json resultでデータをシーケンス化する場合、シーケンス化を必要としないデータがある場合があります.resultで構成できます.
<result name="browse" type="json"><param name="excludeProperties">seriesSet</param><param name="root">category</param></result>
<result name="search_ajax" type="json"><param name="excludeProperties">\[\d+\]\.seriesSet</param><param name="root">categoryList</param></result>
ここでseriesSetはcategoryオブジェクトの1つのSet属性であり、categoryList全体をフィルタするseriesSet構成に注意してください.
補足:最後のexcludePropertiesの設定については、hibernateでone-to-many lazy loading=trueを構成していましたが、consoleで印刷されたsqlはlazy loadではないことを示しており、フロントでも「怠惰ロード」データが見られ、その後コードを追跡し、DAO層でクエリーする際、「怠惰データ」はクエリーされませんでしたが、jsonでデータをシーケンス化する際、それらの「怠惰データ」もシーケンス化されます.だからconsoleの中で大量のsqlを走った.フロントでこれらのデータが不要な場合は、excludePropertiesを設定し、パフォーマンスを向上させる必要があります.
参考資料:http://struts.apache.org/release/2.1.x/docs/json-plugin.html