목록BE/Spring (178)
오봉이와 함께하는 개발 블로그
스프링 메시지 소스 사용 MessageSource 인터페이스 public interface MessageSource { String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale); String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException; MessageSource 인터페이스를 보면 코드를 포함한 일부 파라미터로 메시지를 읽어오는 기능을 제공한다. 스프링이 제공하는 메시지 소스를 어떻게 사용하는지 테스트 코드를 보자 코드 package hello.itemser..
스프링 메시지 소스 설정 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스이다. 따라서 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록하면 된다. 직접 등록 @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-8"); return messageSource; ..
메시지, 국제화 소개 메시지 화면에 보이는 문구가 마음에 들지 않아 상품명이라는 단어를 모두 상품 이름으로 바꿔야 할 때 모든 HTML을 찾아서 고치려면 HTML 파일은 모두 하드코딩 되어 있기 때문에 매우 번거로운 일이다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다. 예를 들어 messages.properties라는 메시지 관리용 파일을 만들어서 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량각 HTML들은 다음과 같이 해당 데이터를 key 값으로 불러서 사용하는 것이다. addForm.html 국제화 메시지에서 한 발 더 나가서 messages.properties를 각 나라별로 별도로 관리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBQINx/btrJIrUppIr/6kusOmMxqlXrqS6ZESWXo0/img.png)
PRG Post/Redirect/Get /** * @ModelAttribute 자체 생략 가능 * model.addAttribute(item) 자동 추가 * */ @PostMapping("/add") public String addItemV4(Item item) { itemRepository.save(item); return "basic/item"; } 해당 컨트롤러는 심각한 문제가 있다. 등록을 완료하고 새로고침을 클릭하면 계속해서 중복 등록되는 것을 확인할 수 있다. 전체 흐름 상품 목록에서 상품 등록 폼으로 이동 등록 폼에서 저장을 누르면 저장이 되며 상품 저장 컨트롤러가 상품 상세 뷰를 호출 URL은 상품 저장 URL이 남아 있다. 새로고침 하면 상품 저장 URL이 그대로 입력됨 중복 등록 POS..
@ModelAttribute @PostMapping("/add") public String addItemV1(@RequestParam("itemName") String itemName, @RequestParam("price") int price, @RequestParam("quantity") Integer quantity, Model model) { Item item = new Item(); item.setItemName(itemName); item.setPrice(price); item.setQuantity(quantity); itemRepository.save(item); model.addAttribute("item", item); return "basic/item"; // model로 넣은 item..