이렇게 @GroupSequence 를 사용해서 검증의 순서를 정하고싶은데 예를 들자면 클라이언트에서 이메일을 작성할때 "ㅇㅇ" 이런 식으로 작성을 하면 @NotBlank 가 통과가 되고 @Email 이 실행이 되어야 하는거 같은데 실행이 되지 않습니다 그리고 실행이 안되는줄 알았지만 아래 아이디 비밀번호를 입력 하게되면 이때 형식에 맞지 않다는 오류 메시지가 나오게 됩니다, 어떻게 해야 할까요.. package hello.instar.validation; import jakarta.validation.GroupSequence; import jakarta.validation.groups.Default; @GroupSequence({Default.class,ValidationGroups.NotBlankGroup.class, ValidationGroups.EmailGroup.class,ValidationGroups.SizeGroup.class, }) public interface ValidationSequence { } @NotBlank(groups = ValidationGroups.NotBlankGroup.class) @Email(groups = ValidationGroups.EmailGroup.class) private String email;
@Controller @RequestMapping("/validation/v2/items") @RequiredArgsConstructor @Slf4j public class ValidationItemControllerV2 { private final ItemRepository itemRepository; private final ItemValidator itemValidator; @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v2/addForm"; } @PostMapping("/add") public String addItemV6( @Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증에 실패하면 다시 입력 폼으로 이동 if(bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); return "validation/v2/addForm"; //TODO 이거는 왜 리다이렉트 안하지 ? } //에러에 안 걸려서, 이후는 성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; } } 위 코드에서 TODO 부분인데요 검증에 실패했을때 addForm 으로 다시 보내는데, 리다이렉트를 안하더라구요 그러면 브라우저에서 새로고침하면 POST 를 보내게 될텐데 상품 등록 폼으로 다시 보내는게 목적이라면 리다이렉트를 하는게 더 좋아 보이는데요 혹시 리다이렉트 안하는 이유가 있을까요 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 인털레제이를 업데이트 한 후 모든 코드에 에러가 생깁니다...
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 이것 저것 찾아봤는데, 같은 에러가 반복적으로 발생하네요. 무엇이 문제인지 모르겠습니다 ㅠㅠ 회원 가입 부분을 Run 할때 발생하고있네요.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 내용 14분 대에서 하신 것처럼 localhost:8080으로 들어갔는데, 에러메시지는 제대로 뜨지만 팝잇콘이 강사님의 말씀처럼 뜨지 않습니다 ㅜㅠㅜㅜ 뭐가 잘못된 걸까요?
이건 질문 아닙니다. ^^ 구현하고 싶은 간단한 내용이 있었는데, 강의에서 배운 내용을 기반으로 하고, A.I.에 질문하여 코드를 작성한 후 정상 작동에 성공했습니다. 저 같은 왕초보도 작동하는 뭔가를 만들어 내게 하는 이 강의는 정말 훌륭합니다~! 아주 기초적이고 작은 성공이라도 동기부여를 위해 소중합니다. ^^ # ■ 아래 코드의 용도 --- 작동 성공했음 _24-10-30 11:26 # "C:\\Users\\user\\Desktop\\제목 추가\\"에 여러 개의 hwp 파일들이 있을 때 # 파일을 하나씩 열고, 문서의 맨 처음으로 이동하여 파일명(~~~.hwp)을 타이핑하고 엔터를 3번 친 후 저장하고 닫기 import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL","FilePathCheckerModule") import os from time import sleep os.chdir("C:\\Users\\user\\Desktop\\제목 추가\\") # r"C:\Users\user\Desktop\\제목 추가\\"로도 작동 성공함 for i in os.listdir(): hwp.Open(os.path.join(os.getcwd(), i)) sleep(0.2) # 문서 객체 가져오기 --- 일코 doc = hwp.XHwpDocuments.Item(0) # 전체 경로에서 파일명 추출 --- 일코, GPT full_path = doc.FullName file_name = os.path.basename(full_path) # 커서를 원하는 위치로 이동 (예: 문서 맨 처음) --- GPT hwp.HAction.Run("MoveTopLevelBegin") # 파일명 입력 (타이핑) --- GPT hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet) hwp.HParameterSet.HInsertText.Text = file_name hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet) # 엔터를 3번 치기 --- GPT for _ in range(3): hwp.HAction.Run("BreakPara") hwp.Save() hwp.Clear(1)
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요. [17]에서 1) dict변수와 di가 같은 변수인가요? 갑자기 변한 설명이 없어서요. 2) di['name']을 실행하면 왜sam이 나오는지. sam은 무슨 의미인지 모르겠습니다.