Skip to content

fix(sample): 등록/수정 폼의 maxlength를 SAMPLE 컬럼 폭에 맞춤 - #74

Merged
jei007 merged 1 commit into
eGovFramework:mainfrom
wantaekchoi:fix/form-maxlength-exceeds-column
Sep 9, 2026
Merged

fix(sample): 등록/수정 폼의 maxlength를 SAMPLE 컬럼 폭에 맞춤#74
jei007 merged 1 commit into
eGovFramework:mainfrom
wantaekchoi:fix/form-maxlength-exceeds-column

Conversation

@wantaekchoi

Copy link
Copy Markdown
Contributor

수정 사유 Reason for modification

  • 버그수정 Bug fixes
  • 기능개선 Enhancements
  • 기능추가 Adding features
  • 기타 Others

수정된 소스 내용 Modified source

egovSampleRegister.html 은 입력 항목의 maxlength 를 SAMPLE 테이블 컬럼 폭에 맞추는 규칙을 스스로 지키고 있습니다. 설명은 DESCRIPTION VARCHAR(200) 에 맞춰 maxlength="200"(122행)과 /200 카운터(126행)를 함께 둡니다. 그런데 카테고리명은 NAME VARCHAR(50) 인데 maxlength="60"(100행), 등록자는 REG_USER VARCHAR(10) 인데 maxlength="60"(136·141행) 입니다.

컬럼 폭은 src/main/resources/db/sampledb.sql:3script/ddl 아래 8개 DBMS 스크립트가 모두 NAME 50 / DESCRIPTION 200 / REG_USER 10 으로 같습니다.

SampleVO@EgovNullCheck 세 개만 선언하고 길이 검증이 없어(@Size·@Lengthsrc/main/java 전체에 없습니다) 한도를 넘긴 값이 그대로 insertSample 로 넘어갑니다. 그래서 화면 검증 메시지가 아니라 INSERT 단계의 잘림 예외가 나고, EgovConfigWebSimpleMappingExceptionResolver 매핑을 타 sample/egovSampleError 로 떨어집니다.

등록자 11자로 POST /addSample.do 를 보낸 결과입니다. 응답은 status=500, view=sample/egovSampleError 입니다.

### Error updating database.  Cause: java.sql.SQLDataException: data exception: string data, right truncation ; size limit: 10 table: SAMPLE column: REG_USER
[...]
### The error may involve egovframework.example.sample.service.impl.SampleMapper.insertSample-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO SAMPLE     ( ID       , NAME       , DESCRIPTION       , USE_YN       , REG_USER )    VALUES ( ?       , ?       , ?       , ?       , ? )

카테고리명 51자도 같은 자리에서 size limit: 50 table: SAMPLE column: NAME 으로 떨어집니다.

변경 내용

항목 컬럼 AS-IS TO-BE
100 카테고리명 name NAME VARCHAR(50) maxlength="60" maxlength="50"
136 등록자 regUser (수정 화면, readonly) REG_USER VARCHAR(10) maxlength="60" maxlength="10"
141 등록자 regUser (등록 화면) REG_USER VARCHAR(10) maxlength="60" maxlength="10"

템플릿 3줄이고 설명(122행)은 이미 맞아 있어 그대로 두었습니다.

maxlength 는 클라이언트 가드라 폼을 우회한 직접 요청은 여전히 500 으로 떨어집니다. 서버 측 길이 검증(@Size)은 메시지 키를 message-common*.properties 세 파일에 새로 넣어야 해서 이번 변경에 넣지 않았습니다. Oracle·Tibero 는 VARCHAR2 가 바이트 기준이라 한글 입력에서는 이 값으로도 넘칠 수 있습니다. 이번 변경은 선언된 컬럼 폭에 맞추는 데까지입니다.

검증

등록 화면(POST /addSampleView.do)과 수정 화면(POST /updateSampleView.do)이 실제로 렌더한 maxlength 를 컬럼 폭과 대조하는 테스트를 추가했습니다. 같은 패키지의 기존 web 테스트와 같은 MockMvc 층입니다.

mvn test -Dtest=EgovSampleControllerTestRegisterViewTest

수정 전에는 두 메서드가 이렇게 실패합니다.

org.opentest4j.AssertionFailedError: 등록 화면 카테고리명 maxlength ==> expected: <50> but was: <60>

mvn test 전체 결과는 수정 전

[ERROR] Tests run: 56, Failures: 2, Errors: 0, Skipped: 0

수정 후

[INFO] Tests run: 56, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

실패 2건은 추가한 테스트뿐이고 기존 54건은 두 회차 모두 통과합니다.

JUnit 테스트 JUnit tests

  • JUnit 테스트 JUnit tests
  • 수동 테스트 Manual testing

테스트 브라우저 Test Browser

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Internet Explorer
  • 기타 Others

브라우저 실행은 하지 않았습니다. 렌더된 HTML 의 maxlength 는 위 테스트가 대조합니다.

테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video

위 출력으로 대신합니다.

카테고리명은 maxlength=60인데 SAMPLE.NAME은 VARCHAR(50)이고, 등록자는
maxlength=60인데 SAMPLE.REG_USER는 VARCHAR(10)이다. 같은 폼의 설명만
DESCRIPTION VARCHAR(200)에 맞춰 maxlength=200과 '/200' 카운터를 쓴다.

한도를 넘겨 입력하면 검증 메시지 없이 INSERT까지 내려가 잘림 예외가 나고
sample/egovSampleError(500)로 떨어진다. 등록자 11자는 'size limit: 10
table: SAMPLE column: REG_USER', 카테고리명 51자는 'size limit: 50
table: SAMPLE column: NAME'이다.

컬럼 폭은 src/main/resources/db/sampledb.sql과 script/ddl 8종이
NAME 50 / DESCRIPTION 200 / REG_USER 10으로 일치한다.

등록·수정 두 화면이 렌더한 maxlength를 컬럼 폭과 대조하는 테스트를
추가한다.

@jei007 jei007 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

표준프레임워크에 대한 지속적인 참여에
대단히 감사드립니다.

@jei007
jei007 merged commit 49eda72 into eGovFramework:main Sep 9, 2026
1 check passed
@wantaekchoi
wantaekchoi deleted the fix/form-maxlength-exceeds-column branch September 9, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants