본문 바로가기
Study Hard/개발 /로직 생각

[스프링, 자바] VO객체의 필드의 공백,null값 일괄 확인 (form 필드 공백확인)

by 코플+ 2023. 5. 26.
<서버>
- 넘겨받은 데이터들 중, 누락된 데이터가 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에선 적합한 방법은 아니라고한다.

댓글