공통코드 추가정보 컬럼 특수문자 변환 serializer 로직 추가

This commit is contained in:
2025-12-10 15:49:48 +09:00
parent 843e638ad4
commit 1fee2d2500
3 changed files with 59 additions and 0 deletions

View File

@@ -1,5 +1,9 @@
package com.kamco.cd.kamcoback.code.dto; 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 com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
@@ -27,8 +31,13 @@ public class CommonCodeDto {
private boolean used; private boolean used;
private Long parentId; private Long parentId;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props1; private String props1;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props2; private String props2;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props3; private String props3;
} }
@@ -42,8 +51,13 @@ public class CommonCodeDto {
private String description; private String description;
private boolean used; private boolean used;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props1; private String props1;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props2; private String props2;
@JsonDeserialize(using = HtmlEscapeDeserializer.class)
private String props3; private String props3;
} }
@@ -83,8 +97,13 @@ public class CommonCodeDto {
@JsonFormatDttm private ZonedDateTime updatedDttm; @JsonFormatDttm private ZonedDateTime updatedDttm;
@JsonSerialize(using = HtmlUnescapeSerializer.class)
private String props1; private String props1;
@JsonSerialize(using = HtmlUnescapeSerializer.class)
private String props2; private String props2;
@JsonSerialize(using = HtmlUnescapeSerializer.class)
private String props3; private String props3;
@JsonFormatDttm private ZonedDateTime deletedDttm; @JsonFormatDttm private ZonedDateTime deletedDttm;

View File

@@ -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<Object> {
@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);
}
}

View File

@@ -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<String> {
@Override
public void serialize(
String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
if (value == null) {
jsonGenerator.writeNull();
} else {
jsonGenerator.writeString(HtmlUtils.htmlUnescape(value));
}
}
}