`
lg_asus
  • 浏览: 190924 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

exclude properties in json result

阅读更多
引用struts-json-plugin.XX.xx.jar。引入它里面的json-plugin.xml,然后user的package要继承json-default。引入json interceptor,如下:
 <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和excludeNullProperties属性,但是在这里设置这两个参数无效。
如果想对json result设置这两个参数可以在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对象中的一个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
分享到:
评论

相关推荐

    VSCode Debug 配置文件

    本篇文章将详细介绍在VSCode中用于调试配置的四个核心文件:`tasks.json`、`launch.json`、`c_cpp_properties.json`和`settings.json`。 1. `launch.json`: `launch.json`文件是VSCode调试配置的核心,它定义了...

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    &lt;result type="json"&gt; &lt;!-- 可选配置,如排除某些字段 --&gt; &lt;param name="exclude"&gt;field1,field2 &lt;/result&gt; ``` 3. **Action类的模型驱动**:如果你使用模型驱动方式,需要确保Action类中的属性与返回的JSON...

    json使用jar包

    1. **排除冲突的依赖**:在Maven或Gradle的配置文件中,可以使用`exclude`标签来排除不需要的JSON库,确保只使用指定版本的jar包。 2. **统一版本**:确保所有依赖项使用相同版本的JSON库,以减少版本不兼容导致的...

    struts2+json

    其中,`result type="json"`指定了结果类型为JSON,`myJsonObject`参数表示返回的JSON数据将来自Action中的一个属性。 3. **Action类的修改**: 需要在Action类中创建一个对应的属性,如`myJsonObject`,并填充JSON...

    Struts2-Json-Plugin 的使用.pdf

    当你在Action中定义一个结果类型为"json"的Result时,Struts2-Json-Plugin会自动处理JSON序列化。默认情况下,Action实例的整个对象图(不包括基类)都会被序列化,你可以通过"root"参数指定自定义的根对象。 **...

    xcopy与EXCLUDE参数的用法

    本文将详细解释如何使用`xcopy`与`EXCLUDE`参数。 首先,`xcopy`的基本语法是: ```cmd xcopy 源 目标 [选项] ``` 其中,`源`是你要复制的文件或目录,`目标`是你希望复制到的位置。选项可以根据需求选择,例如 `/e...

    exclude

    exclude

    struts2集成jsonplug项目

    &lt;result type="json"&gt; &lt;!-- You can customize JSON serialization settings here --&gt; &lt;/result&gt; ``` 4. **JSON结果类型配置**:Struts2的JSON插件提供了一些配置选项来控制JSON序列化的行为,比如是否包含...

    nlohmann_json_cmake_fetchcontent:用于nlohmannjson的轻量级发行跟踪存储库。 适用于 CMake fetchcontent。 每周自动升级

    nlohmann/json 的发布跟踪存储库此存储库基于: 。 目标是提供一个轻量级存储库,...NOT json_POPULATED) FetchContent_Populate(json) add_subdirectory ( ${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL

    batch-edit-json:批量编辑json文件

    批处理编辑json 批量编辑json文件 该工具旨在: 简单的 方便的 快速(并行执行IO操作) 安装 npm install -g batch-edit-json 使用 Usage: batch-edit-json [-vd] [--remove =&lt; key&gt; ]... [--add =&lt; object &...

    基于Java的实例开发源码-JSON类库 Flexjson.zip

    在实际项目中,开发者可以根据需求调整Flexjson的使用方式,例如,通过使用`exclude()`或`include()`方法来控制序列化时包含或排除特定字段,或者通过注册自定义的转换器来处理特定类型的对象。 总结来说,Flexjson...

    JSON类库 Flexjson

    - **忽略和包含字段**: 使用`include()`和`exclude()`方法可以选择性地包含或排除对象的字段。 - **命名策略**: 可以设置命名策略,使JSON字段名与Java字段名不同,如camelCase转换为snake_case。 4. **在实际...

    Android 如何实现exclude aar包中的某个jar包

    注意,要使用exclude module这种方式,直接使用exclude group方式没有效果。exclude group的方法适用于exclude JAR包中的文件。 implementation(name: '×××××××aar包', ext: 'aar') { exclude module: '...

    tsconfig.json配置详解

    `tsconfig.json`是TypeScript项目的核心配置文件,用于定义项目的编译设置和源文件范围。这个文件告诉TypeScript编译器如何处理源代码,包括哪些文件需要编译、使用何种模块系统、如何处理类型检查以及其他编译选项...

    android 多渠道 sourceset main文件夹下和其他渠道下的java文件重复 exclude方式解决

    android 多渠道 sourceset main文件夹下和其他渠道下的java文件重复 exclude方式解决

    rsync详解之exclude排除文件

    问题:如何避开同步指定的文件夹? –exclude rsync –exclude files and folders ...直接添加–exclude 即可 比如–exclude “proc” –exclude ‘sources’ Note: the directory path is relative to the folder yo

    tsconfig.json:快速创建自以为是的tsconfig.json

    `tsconfig.json`是TypeScript项目的核心配置文件,它定义了编译器的选项和项目的编译设置。这个文件告诉TypeScript编译器如何处理源代码,包括哪些文件需要被包含,哪些文件需要被排除,以及如何进行类型检查等。在...

    css-exclude:排除在多个文件中找到的 CSS 规则

    #什么是css-exclude ? css-exclude 是一个简单的实用程序,它允许您输入两个 css 文件,并让该实用程序打印出在第一个文件中找到的规则/at-rules,而不是在第二个文件中。 css-exclude 不关心文档顺序,这使得在...

Global site tag (gtag.js) - Google Analytics