diff --git a/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java b/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java index 2071af47..3827603b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java @@ -1,5 +1,9 @@ package com.kamco.cd.kamcoback.code.dto; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.kamco.cd.kamcoback.common.utils.html.HtmlEscapeDeserializer; +import com.kamco.cd.kamcoback.common.utils.html.HtmlUnescapeSerializer; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; @@ -27,8 +31,13 @@ public class CommonCodeDto { private boolean used; private Long parentId; + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props1; + + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props2; + + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props3; } @@ -42,8 +51,13 @@ public class CommonCodeDto { private String description; private boolean used; + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props1; + + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props2; + + @JsonDeserialize(using = HtmlEscapeDeserializer.class) private String props3; } @@ -83,8 +97,13 @@ public class CommonCodeDto { @JsonFormatDttm private ZonedDateTime updatedDttm; + @JsonSerialize(using = HtmlUnescapeSerializer.class) private String props1; + + @JsonSerialize(using = HtmlUnescapeSerializer.class) private String props2; + + @JsonSerialize(using = HtmlUnescapeSerializer.class) private String props3; @JsonFormatDttm private ZonedDateTime deletedDttm; diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlEscapeDeserializer.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlEscapeDeserializer.java new file mode 100644 index 00000000..7496a2d8 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlEscapeDeserializer.java @@ -0,0 +1,20 @@ +package com.kamco.cd.kamcoback.common.utils.html; + +import com.fasterxml.jackson.core.JacksonException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import java.io.IOException; +import org.springframework.web.util.HtmlUtils; + +public class HtmlEscapeDeserializer extends JsonDeserializer { + + @Override + public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) + throws IOException, JacksonException { + String value = jsonParser.getValueAsString(); + System.out.println("🔥 HtmlEscapeDeserializer 실행됨: " + value); + System.out.println("convert : " + (value == null ? null : HtmlUtils.htmlEscape(value))); + return value == null ? null : HtmlUtils.htmlEscape(value); + } +} diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlUnescapeSerializer.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlUnescapeSerializer.java new file mode 100644 index 00000000..181a0eff --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/html/HtmlUnescapeSerializer.java @@ -0,0 +1,20 @@ +package com.kamco.cd.kamcoback.common.utils.html; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import java.io.IOException; +import org.springframework.web.util.HtmlUtils; + +public class HtmlUnescapeSerializer extends JsonSerializer { + @Override + public void serialize( + String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + if (value == null) { + jsonGenerator.writeNull(); + } else { + jsonGenerator.writeString(HtmlUtils.htmlUnescape(value)); + } + } +}