[Spring] 커맨드 객체 사용방법#2

커맨드객체를 통해 값을 출력할때 EL(Expression Language)을 사용했습니다. 

이번엔 EL에 별칭을 주는 방법을 알아보겠습니다.

 

StudentInformation DTO/VO

package com.co.mvc05_03;

public class StudentInformation {

	private String name;
	private String age;
	private String gradeNum;
	private String classNum;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getGradeNum() {
		return gradeNum;
	}
	public void setGradeNum(String gradeNum) {
		this.gradeNum = gradeNum;
	}
	public String getClassNum() {
		return classNum;
	}
	public void setClassNum(String classNum) {
		this.classNum = classNum;
	}
	
	
	
}

 

StudentInformationstudentInfo 라는 별칭으로 사용해 EL로 출력하는 방법을 보겠습니다.

기존방식

	@RequestMapping(value = "/student", method = RequestMethod.GET)
	public String studentInfo(Model model, StudentInfomation studentInfo) {

		model.addAttribute("studentInfo", studentInfo);
		return "studentView";
	}

model.addAttribute("studentInfo",studentInfo); 를 사용하면 ${StudentInformation.name}이 아닌

${studentInfo.name}과 같은 방법으로 사용할 수 있습니다.

 

어노테이션 사용

@RequestMapping("student")
public String student(@ModelAttribute("studentInfo") StudentInformation studentInformation) {
	return "studentView";
}

매개변수에 @ModelAttribute("studentInfo") StudentInformation studentInformation)

을 사용하면 메소드 내에서 설정해줄 필요없이 바로 별칭을 사용할 수 있습니다.

 

사용 예

 

 

전체 코드

HomeController

package com.co.mvc05_03;



import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String inPut(Model model, StudentInfomation studentInfo) {

		return "studentInput";
	}

	
	//model에 studentInfo라는 별칭으로 사용하고싶으면 addAttribute사용 ( 기존방식 )
	@RequestMapping(value = "/student", method = RequestMethod.GET)
	public String studentInfo(Model model, StudentInfomation studentInfo) {

		model.addAttribute("studentInfo", studentInfo);
		return "studentView";
	}

	
	/*
	// studentInfomation에 별칭 부여 하고싶으면 어노테이션을 사용하는 방법도 있음
	@RequestMapping("student")
	public String student(@ModelAttribute("studentInfo") StudentInfomation studentInfomation) {
		return "studentView";
	}*/


}

 

StudentInfomation

package com.co.mvc05_03;

public class StudentInfomation {

	private String name;
	private String age;
	private String gradeNum;
	private String classNum;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getGradeNum() {
		return gradeNum;
	}
	public void setGradeNum(String gradeNum) {
		this.gradeNum = gradeNum;
	}
	public String getClassNum() {
		return classNum;
	}
	public void setClassNum(String classNum) {
		this.classNum = classNum;
	}
	
	
	
}

 

studentInput.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<form action="./student">
		이름:<input type="text" name="name">
		 나이:<input type="text"name="age">
		학년:<input type="text" name="gradeNum"> 
		반:<input type="text" name="classNum">
		<input type="submit">
	</form>
</body>
</html>

 

studentView.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이름 : ${studentInfo.name}<br>
나이:${studentInfo.age}<br>
학년:${studentInfo.gradeNum }<br>
반:${studentInfo.classNum }<br>
</body>
</html>

댓글

Designed by JB FACTORY