보라코딩

스프링 UriComponentsBuilder를 이용한 링크 생성 본문

코딩/Spring

스프링 UriComponentsBuilder를 이용한 링크 생성

new 보라 2023. 5. 16. 14:34

 

Criteria.java

package com.mystudy.domain;

import org.springframework.web.util.UriComponentsBuilder;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class Criteria {

private int pageNum;
private int amount;

public Criteria() {
this(1, 10); // 기본이 1page에  10개
}

public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
}


// 검색처리 관련 추가
private String type;
private String keyword;

public String[] getTypeArr() {
return type == null? new String[] {} : type.split("");
}


// UriComponentsBuilder
public String getListLink() {

UriComponentsBuilder builder = UriComponentsBuilder.fromPath("")
.queryParam("pageNum", this.pageNum)
.queryParam("amount", this.getAmount())
.queryParam("type", this.getType())
.queryParam("keyword", this.getKeyword());

return builder.toUriString();
}


}

 

 

 

 

BoardController.java

 

변경전

 

@PostMapping("/modify")
public String modify(BoardVO boardVO, RedirectAttributes rttr, @ModelAttribute("cri") Criteria cri) {

log.info("modify : " + boardVO);

if (service.modify(boardVO)) {
rttr.addFlashAttribute("result", "success");


rttr.addAttribute("pageNum", cri.getPageNum());
rttr.addAttribute("amount", cri.getAmount());
rttr.addAttribute("type", cri.getType());
rttr.addAttribute("keyword", cri.getKeyword());

return "redirect:/board/list";
}

 

 

변경후

@PostMapping("/modify")
public String modify(BoardVO boardVO, RedirectAttributes rttr, @ModelAttribute("cri") Criteria cri) {

log.info("modify : " + boardVO);

if (service.modify(boardVO)) {
rttr.addFlashAttribute("result", "success");


return "redirect:/board/list" + cri.getListLink();
}

 

 

 

modify와 remove는

위와 같이 변경해주면 훨씬 깔끔!!