/** * YIXUN_1.5_EE */ package com.xiongyingqi.jackson.annotation; import java.lang.annotation.*; /** * json属性过滤注解,对于同一个pojo来说 @AllowProperty 是与 @IgnoreProperty 是冲突的,如果这两个注解注解了<br> * 例如以下代码YxResource实体只会显示resourceName和resourceDescribe属性 * <p> * <pre> * @IgnoreProperties( * value = { * @IgnoreProperty( * pojo = YxResource.class, * name = { * "yxResourceDataRelations", * "yxResourceSelfRelationsForSublevelResourceId", * "yxPermisionResourceRelations" }), * @IgnoreProperty( * pojo = YxResourceSelfRelation.class, * name = { * "yxResourceBySuperiorResourceId", * "id" }) * }, * allow = { * @AllowProperty( * pojo = YxResource.class, * name = { "<b><i>resourceName</i></b>" }) }) * @AllowProperty( * pojo = YxResource.class, * name = { "<b><i>resourceDescribe</i></b>" }) * </pre> * <p> * <p> * 但是,对于同一个pojo的同一属性来说@AllowProperty是与@IgnoreProperty则会按照@IgnoreProperty过滤的属性名过滤 * 例如以下代码YxResource实体不会显示resourceName属性的值 * <p> * <pre> * @IgnoreProperties( * value = { * @IgnoreProperty( * pojo = YxResource.class, * name = { "<b><i>resourceName</i></b>", * "yxResourceDataRelations", * "yxResourceSelfRelationsForSublevelResourceId", * "yxPermisionResourceRelations" }), * @IgnoreProperty( * pojo = YxResourceSelfRelation.class, * name = { * "yxResourceBySuperiorResourceId", * "id" }) * }, * allow = { * @AllowProperty( * pojo = YxResource.class, * name = { "<b><i>resourceName</i></b>" }) }) * </pre> * * @author 瑛琪 <a href="http://xiongyingqi.com">xiongyingqi.com</a> * @version 2013-9-27 下午4:18:39 */ @Documented @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface IgnoreProperties { /** * 要过滤的属性 * * @return */ IgnoreProperty[] value() default @IgnoreProperty(pojo = Object.class, name = ""); /** * 允许的属性 * * @return */ AllowProperty[] allow() default @AllowProperty(pojo = Object.class, name = ""); }