Spring/Study 2020. 4. 17. 20:17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

@ModelAttribute

@ModelAttirbute를 이용하면 커멘드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때사용된다.

MemberController.java

@RequestMapping(value = "/memRemove", method = RequestMethod.POST)
public String memRemove(@ModelAttribute("mem") Member member) {    
    service.memberRemove(member);    
    return "memRemoveOk";
}
cs

memRemoveOk.jsp

ID : ${mem.memId}<br />
cs

 

커맨드 객체 프로퍼티 데이터 타입

memJoin.html

<form action="/lec19/member/memJoin" method="post">
    ID : <input type="text" name="memId" ><br />
    PW : <input type="password" name="memPw" ><br />
    MAIL : <input type="text" name="memMail" ><br />
    PHONE1 : <input type="text" name="memPhones[0].memPhone1" size="5"> -
             <input type="text" name="memPhones[0].memPhone2" size="5"> -
             <input type="text" name="memPhones[0].memPhone3" size="5"><br />
    PHONE2 : <input type="text" name="memPhones[1].memPhone1" size="5"> -
             <input type="text" name="memPhones[1].memPhone2" size="5"> -
             <input type="text" name="memPhones[1].memPhone3" size="5"><br />
    <input type="submit" value="Join" >
    <input type="reset" value="Cancel" >
</form>
cs

Member.java

public class Member {
    private String memId;
    private String memPw;
    private String memMail;
    private List<MemPhone> memPhones;
    
    public String getMemId() {
        return memId;
    }
    public void setMemId(String memId) {
        this.memId = memId;
    }
    public String getMemPw() {
        return memPw;
    }
    public void setMemPw(String memPw) {
        this.memPw = memPw;
    }
    public String getMemMail() {
        return memMail;
    }
    public void setMemMail(String memMail) {
        this.memMail = memMail;
    }
    public List<MemPhone> getMemPhones() {
        return memPhones;
    }
    public void setMemPhones(List<MemPhone> memPhones) {
        this.memPhones = memPhones;
    }
}
cs

 

Model & ModelAndView

Controller에서 View에 데이터를 전달하기 위해 사용되는 객체로 Model과 ModelAndView가 있다. Model은 뷰에 데이터만을 전달하기 위한 객체이고, ModelAndView는 데이터와 뷰의 이름을 함께 전달하는 객체이다.

@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public String memModify(Model model, Member member) {    
    Member[] members = service.memberModify(member);
        
    model.addAttribute("memBef", members[0]);
    model.addAttribute("memAft", members[1]);
        
    return "memModifyOk";
}
cs

 

@RequestMapping(value = "/memModify", method = RequestMethod.POST)

public ModelAndView memModify(Member member) {        

    Member[] members = service.memberModify(member);

        

    ModelAndView mav = new ModelAndView();

    mav.addObject("memBef", members[0]);

    mav.addObject("memAft", members[1]);

        

    mav.setViewName("memModifyOk");

    

    return mav;

}

Colored by Color Scripter

cs

posted by DevMoomin
: