티스토리 뷰
클라이언트로부터 요청받은 파라메터가 아래와 같다고 가정
page=1
pageSize=10
sort[0][field]="FACTORYNAME"
sort[0][dir]="desc"
Controller에서 파라메터를 받을 Model 클래스를 작성
public class SomeModel {
private int page;
private int pageSize;
private String sortField;
private String sortDir;
// Getters & Setters 메써드 작성
// toString() 메써드 작성
}
Controller 메써드 작성
@Controller
public class someController {
@RequestMapping(value = "/doSomething", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public Map<String, Object> doSomething(@ModelAttribute SomeModel
someModel, @RequestParam(value = "sort[0][field]", required = false)
String sortField, @RequestParam(value = "sort[0][dir]", required =
false) String sortDir) {
Map<String, Object> response = new HashMap<String, Object>();
someModel.setSortField(sortField);
if (Objects.equal(sortDir, null)) {
someModel.setSortDir(sortDir);
} else {
someModel.setSortDir(sortDir.toUpperCase());
}
List<Map<String, Object>> data = someService.doSomething(someModel);
response.put("data", data);
if (Objects.equal(data.size(), 0)) {
response.put("total", 0);
} else {
response.put("total", data.get(0).get("TOTAL_ROW_COUNT"));
}
return response;
}
예제 설명
* Spring MVC 3에서 컨트롤러는 각각의 HTTP 요청 파라메터를 @RequestParam을 통해 Java 기본 타입 변수에 담을 수 있음
* 보다 편리한 방법으로 여러 파라메터들을 @ModelAttribute를 통해 미리 정의된 모델 클래스에 한꺼번에 담을 수 있음
* @RequestParam의 속성 required = false로 정의하면 파라메터가 전달되지 않아도 변수에 null로 담겨짐
* 모델 클래스에 정의되어 있지만 전달되지 않은 파라메터는 변수에 null로 담겨짐
* sort[0][field]와 같이 List<Object> 형태의 파라메터는 @ModelAttribute를 통해 담을 수 없음(.NET에서는 가능)
* sort[0].field와 같이 전달되어야 @ModelAttribute로 담는 것이 가능
* 따라서 @RequestParam을 통해 개별 변수에 담은 후 모델 클래스에 대입하는 번거로운 방법 사용
* 위 예제에 사용된 Objects 클래스는 Google Guava 라이브러리가 제공하는 유틸리티 클래스
참고자료
http://springmvc.egloos.com/535572
http://krams915.blogspot.kr/2010/12/spring-3-mvc-using-modelattribute-in.html
http://www.captaindebug.com/2011/11/using-spring-mvcs-modelattribute.html
http://stackoverflow.com/a/5624006
- Total
- Today
- Yesterday
- Tomcat
- 알뜰폰
- JavaScript
- 구동계
- DynamoDB
- Kendo UI Web Grid
- 평속
- java
- Docker
- kotlin
- bootstrap
- chrome
- 로드바이크
- JHipster
- Kendo UI
- Spring MVC 3
- node.js
- MySQL
- Spring Boot
- Eclipse
- jstl
- graylog
- 자전거
- jsp
- 로드 바이크
- CentOS
- maven
- 태그를 입력해 주세요.
- spring
- jpa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |