티스토리 뷰
클라이언트로부터 요청받은 파라메터가 아래와 같다고 가정
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
- 자전거
- 태그를 입력해 주세요.
- chrome
- JHipster
- java
- 로드 바이크
- Spring Boot
- Kendo UI
- CentOS
- Kendo UI Web Grid
- 로드바이크
- 알뜰폰
- maven
- bootstrap
- kotlin
- graylog
- jstl
- JavaScript
- node.js
- Spring MVC 3
- Eclipse
- Tomcat
- 구동계
- DynamoDB
- 평속
- spring
- MySQL
- jpa
- jsp
- Docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |