<서버>
- 넘겨받은 데이터들 중, 누락된 데이터가 1개 이상인 경우 회원가입 페이지로 이동 후 ‘누락된 입력 정보가 존재합니다.’알림창을 띄워주세요.
과제에 form태그의 필드들이 서버단으로 넘어온 parameter 값들의 공백값을 확인하고 처리하는 로직이 있었다.
@RequestParam Map<String, Object> map 매개변수에 넣어 모든 map값을 가져와 for문으로 null값을 돌려도 되지만
VO(자바빈즈) 파일로 파라미터에서 받아와 각 필드의 공백을 확인하고 싶었다.
VO객체도 map처럼 각 필드명을 꺼내고 저장된 key값을 확인할 순 없을까?
하지만 자바빈즈는 맵처럼 각 값을 꺼내 for문을 돌릴수 없으므로 고민하다가 검색을 해보니 여러개 나왔다.
map처럼 각 필드명 을 가져오면서 하는 방법중 Java Reflection API를 이용하면 가능해졌다.
여기에 blank값은 commons-lang3으로 확인하였다.
for (Field f : memVo.getClass().getDeclaredFields()) {
f.setAccessible(true);
try {
if (StringUtils.isBlank(String.valueOf(f.get(memVo)))) {
model.addAttribute("msg", "공백 form 존재.");
model.addAttribute("url", "/login/signin");
return "pages/alert";
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
리플렉션에 대해 검색해보니 주의점은 리플렉션 연산 자체가 속도가 느리므로 web에선 적합한 방법은 아니라고한다.
'Study Hard > 개발 /로직 생각' 카테고리의 다른 글
varchar2(8) 타입으로 저장된 날짜를 나타내는 문자열을 어떻게 가져오면 좋을까? (0) | 2023.07.05 |
---|---|
CSR(클라이언트 렌더링)이 대세가 된 시장 (feat. jsp는 사장되고 있나요..?) (0) | 2023.07.05 |
[스프링Legacy] 아이디 찾기, 비밀번호 찾기 로직 (Ajax, JSON 사용) (0) | 2023.06.09 |
[Web] 로그인 폼에서 엔터키로 로그인하기 (자바스크립트 사용하지않고) (0) | 2023.05.28 |
[스프링,Mybatis] Model(VO)의 필드명은 CamelCase가 좋을까? UnderScore가 좋을까? (0) | 2023.05.26 |
댓글