Spring Boot 웹 프로젝트 의 매개 변수 바 인 딩 을 자세히 설명 합 니 다.
이 주 해 는 하나의 요청 데 이 터 를 연결 하 는 데 사 용 됩 니 다.url 의 매개 변수 일 수도 있 고 폼 이 제출 한 매개 변수 와 업로드 한 파일 일 수도 있 습 니 다.
세 가지 속성 이 있 습 니 다.value 는 매개 변수 이름 을 설정 하 는 데 사 용 됩 니 다.defaultValue 는 매개 변수 에 기본 값 을 설정 하 는 데 사 용 됩 니 다.required 가 true 일 때 매개 변수 가 비어 있 으 면 오류 가 발생 합 니 다.
자,구체 적 인 예 를 보 여 드 리 겠 습 니 다.
우선 vm:
<h1>param1:${param1}</h1>
<h1>param2:${param2}</h1>
좋아,두 개의 인 자 를 보 여주 기 위해 서.첫 번 째 상황:
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap,Integer param1, int param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
여기 앞의 매개 변 수 는 포장 형 이 고 뒤의 매개 변 수 는 원본 형식 입 니 다.직접 url 로 요청:
http://localhost:8080/hello1.htm?param1=1¶m2=2
결과:
하지만:
param 2 를 전달 하지 않 으 면:
http://localhost:8080/hello1.htm?param1=1
바로 잘못 보 고 했 어 요.
null 을 원본 형식 으로 변환 할 수 없 기 때 문 입 니 다.
따라서 모든 매개 변 수 는 포장 유형 을 사용 하고 원본 유형 을 사용 하지 않 는 것 을 권장 합 니 다.
두 번 째 상황:
여전히 위 에 있 는 contrller 입 니 다.주 소 는 바 뀌 었 습 니 다.
http://localhost:8080/hello1.htm?param2=1¶m1=2
바로 param 2=1,param 1=2 를 시험 해 보 려 고 합 니 다.매개 변수 바 인 딩 이 순서 와 관련 이 있 는 지,아니면 매개 변수 이름 과 만 관련 이 있 는 지,결과:
따라서 spring Mvc 매개 변수 바 인 딩 은 매개 변수 이름 과 만 관계 가 있 습 니 다.
세 번 째 상황:
페이지 에 있 는 폼 의 매개 변수 와 코드 에 있 는 매개 변수 이름 이 다 르 면 어떻게 합 니까?이 럴 때 주석 을 사용 할 수 있 습 니 다.
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(value = "paramTest") Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
param 1 앞 에 주 해 를 붙 였 습 니 다.이때 첫 번 째 인 자 는 param Test 이름 의 인자 만 받 아들 이 고 param 1 은 이 때 무효 입 니 다.만약 이때 우리 가 이렇게 요구한다 면:
http://localhost:8080/hello1.htm?param1=1¶m2=2
spring 이 직접 잘못 보 고 했 습 니 다.이렇게 요청 해 야 합 니 다.
http://localhost:8080/hello1.htm?paramTest=1¶m2=2
결과:
네 번 째 상황:
때로는 페이지 의 폼 클 라 이언 트 가 값 을 채 우지 않 지만 컨트롤 러 에 서 는 기본 값 이 있 기 를 바 랍 니 다.
이렇게 할 수 있 습 니 다.
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(defaultValue = "5") Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
RequestParam 의 defaultValue 속성 을 사 용 했 습 니 다.url 매개 변수 에 param 1 이 전송 되 지 않 았 다 면 오류 가 발생 하지 않 았 을 것 입 니 다.기본 값 을 사용 하 십시오.예 를 들 어 우리 가 이렇게 요청 한 것 입 니 다.http://localhost:8080/hello1.htm?param2=2
결과:
그러나 url 에서 param 1 에 값 을 부여 하면:
http://localhost:8080/hello1.htm?param1=3¶m2=2
결과:
즉,우리 가 부여 한 값 은 기본 값 을 수정 할 것 이다.
다섯 번 째 상황:
RequestParam 속성 이 하나 더 있 습 니 다:required
반드시 값 을 전달 해 야 한 다 는 뜻 이다.그렇지 않 으 면 잘못 을 보고 하 는 것 이 바로 이렇게 제멋대로 라 는 뜻 이다.
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(required = true) Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
그러나 required=true,defaultValue=과 동시에 나타 날 때 required 가 효력 을 잃 고 전송 할 수 있 으 며 전송 할 수 있 습 니 다.단순 유형 매개 변수 바 인 딩 소결:
springMVC 는 기본적으로 매개 변수 위치 가 아 닌 매개 변수 이름 에 따라 연 결 됩 니 다.
포장 유형 을 사용 하 십시오.그렇지 않 으 면 값 을 전달 하지 않 으 면 잘못 보고 할 수 있 습 니 다.
매개 변수 이름 을 바 꾸 려 면@RequestParam(value=")을 사용 하 십시오.
@RequestParam(defaultValue=")을 사용 하고,참조 하지 않 을 때 기본 값 을 사용 합 니 다
@RequestParam(required=true)을 사용 하여 인 자 를 전달 해 야 합 니 다.
2.@PathVariable
이 설명 을 사용 하면 URL 에 있 는 자리 표시 자 파 라 메 터 를 컨트롤 러 처리 방법 에 연결 할 수 있 습 니 다.이렇게 사용 할 수 있 습 니 다.
@RequestMapping("/hello2.htm/{param1}/{param2}")
public String hello2(ModelMap modelMap, @PathVariable Integer param1, @PathVariable Integer param2) {
System.out.println(" hello2 ");
System.out.println(param1 + "," + param2);
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
URL:http://localhost:8080/hello2.htm/1/2
결과:
PathVariable 주 해 를 추가 하지 않 으 면 연결 할 수 없습니다.
@RequestMapping("/hello2.htm/{param1}/{param2}")
public String hello2(ModelMap modelMap,Integer param1, @PathVariable Integer param2) {
System.out.println(" hello2 ");
System.out.println(param1 + "," + param2);
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
첫 번 째 인자 의 주 해 를 지 웠 습 니 다:http://localhost:8080/hello2.htm/1/2
결과:
빈 값 을 페이지 로 전송,귀속 불가
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.