SpringMVC의 다양한 파라미터 결합 방법
1. 기본 데이터 유형 (예를 들어 INT를 취하고 다른 것과 비슷합니다) :
컨트롤러 코드 :
@requestmapping ( "saysth.do") public void test (int count) {}양식 코드 :
<form action = "saysth.do"method = "post"> <input name = "count"value = "10"type = "text"/>....../ 양식>
양식 입력의 이름 값이 컨트롤러의 매개 변수 변수 이름과 일치하는 경우 데이터 바인딩을 완료 할 수 있습니다. 일관성이없는 경우 @requestparam 주석을 사용할 수 있습니다. 기본 데이터 유형이 컨트롤러 메소드 매개 변수에 정의되지만 페이지에서 제출 된 데이터는 NULL 또는 "" "데이터 변환 예외가 발생한다는 점에 유의해야한다. 즉, 양식에 의해 전달 된 데이터가 Null 또는 "" "가 될 수 없도록해야합니다. 따라서 개발 프로세스 중에는 매개 변수 데이터 유형을 비어있을 수있는 데이터의 포장 유형으로 정의하는 것이 가장 좋습니다. 다음 예제를 참조하십시오.
2. 포장 유형 (예를 들어 정수를 취하고 다른 사람은 비슷합니다) :
컨트롤러 코드 :
@requestmapping ( "saysth.do") 공개 무효 테스트 (정수 수) {}양식 코드 :
<form action = "saysth.do"method = "post"> <input name = "count"value = "10"type = "text"/>....../ 양식>
기본적으로 기본 데이터 유형과 동일합니다. 차이점은 양식에 의해 전달 된 데이터가 null 또는 ""일 수 있다는 것입니다. 위의 코드는 예입니다. 양식의 NUM이 ""또는 양식에 NUM 입력이 없으면 컨트롤러 메소드 매개 변수의 NUM 값은 NULL입니다.
3. 사용자 정의 객체 유형 :
모델 코드 :
공개 클래스 사용자 {private String firstName; 개인 문자열 마지막 이름; 공개 문자열 getFirstName () {return firstName; } public void setFirstName (String FirstName) {this.firstName = FirstName; } public String getLastName () {return lastName; } public void setLastName (String lastName) {this.lastName = lastName; }}컨트롤러 코드 :
@requestmapping ( "saysth.do") public void test (사용자 사용자) {}양식 코드 :
<form action = "saysth.do"method = "post"> <input name = "firstName"value = "zhang"type = "text"/> <입력 이름 = "lastName"value = "Three"type = "text"/>......../ form>
매우 간단합니다. 객체의 속성 이름과 입력의 이름 값을 하나씩 일치 시키십시오.
4. 화합물 객체 유형 사용자 정의 :
모델 코드 :
공개 클래스 contactInfo {private String tel; 개인 문자열 주소; 공개 문자열 getTel () {return tel; } public void settel (String tel) {this.tel = tel; } public String getAddress () {return address; } public void setAddress (문자열 주소) {this.address = 주소; }} 공개 클래스 사용자 {private String firstName; 개인 문자열 마지막 이름; Private ContactInfo ContactInfo; 공개 문자열 getFirstName () {return firstName; } public void setFirstName (String FirstName) {this.firstName = FirstName; } public String getLastName () {return lastName; } public void setLastName (String lastName) {this.lastName = lastName; } public contactInfo getContactInfo () {return contactInfo; } public void setContactInfo (contactInfo contactInfo) {this.contactInfo = contactInfo; }} 컨트롤러 코드 :
@requestmapping ( "sayth.do") public void test (user user) {system.out.println (user.getfirstname ()); System.out.println (user.getLastName ()); System.out.println (user.getContActInfo (). getTel ()); System.out.println (user.getContactInfo (). getAddress ());} 양식 코드 :
<form action = "saysth.do"method = "post"> <input name = "firstName"value = "zhang" /> <br> <입력 이름 = "lastName"value = "Three" /> <br> <input name = "contactInfo.tel"value = "13809908909" />> <input name = "buyjing" "beiz" /> <br> <입력 유형 = "제출"값 = "저장" /> < /form>
사용자 객체에는 contactInfo 속성이 있습니다. 컨트롤러의 코드는 포인트 3에서 말하는 것과 일치합니다. 그러나 양식 코드에서는 입력 이름의 이름을 지정하려면 "속성 이름 (객체 유형의 속성). attribute name"을 사용해야합니다.
5. 목록 바인딩 :
목록은 객체에 바인딩되어야하며 컨트롤러 메소드의 매개 변수에 직접 쓸 수 없습니다.
모델 코드 :
공개 클래스 사용자 {private String firstName; 개인 문자열 마지막 이름; 공개 문자열 getFirstName () {return firstName; } public void setFirstName (String FirstName) {this.firstName = FirstName; } public String getLastName () {return lastName; } public void setLastName (String lastName) {this.lastName = lastName; }} public class userListform {private list <user> 사용자; 공개 목록 <user> getUsers () {반환 사용자; } public void setUsers (list <user> users) {this.users = user; }} 컨트롤러 코드 :
@requestmapping ( "sayth.do") public void test (userListForm userform) {for (user user : userform.getUsers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()); }}양식 코드 :
<form action = "saysth.do"method = "post"> <table> <thead> <tr> <th> 이름 </th> <th> 성 </th> </tr> </th> </thead> <tfoot> <tr> <td colspan = "2"> <입력 유형 = "value ="save "/> </td> </tfoot> <td> <td> <td> <td> name = "users [0] .firstName"value = "aaa"/> </td> <td> <입력 이름 = "users [0] .lastName"value = "bbb"/> </td> </tr> <tr> <input name = "1] .firstname"CCC "/> <td> <td> <input 이름 = "사용자 [1] .lastName"value = "ddd"/> </td> </td> <td> <td> <input name = "users [2] .firstName"value = "eee"/> </td> <td> <입력 이름 = "2] .lastname"value = "fff" /> </td> </tr> </tbody> </table> </form>
실제로, 이것은 4 번째 포인트의 사용자 객체에서 contantinfo 데이터의 바인딩과 다소 유사하지만, 여기서 userListForm 객체의 속성은 일반적인 사용자 정의 객체가 아닌 목록으로 정의됩니다. 따라서 양식에 목록의 첨자를 지정해야합니다. Spring은 최대 첨자 값을 크기로 만든 목록 객체를 생성 할 것이라고 언급 할 가치가 있습니다. 따라서 형태로 동적 인 추가 및 행 삭제가있는 경우 특별한주의를 기울여야합니다. 예를 들어, 테이블을 사용한 후에는 사용자가 행을 삭제 한 후 첨자 값이 실제 크기와 일치하지 않습니다. 사용 중에 행을 여러 번 추가합니다. 현재 목록의 객체 만 위트 스크립트가있는 양식의 값을 갖습니다. 그렇지 않으면 NULL이됩니다. 예를 참조하십시오 :
양식 코드 :
<form action = "saysth.do"method = "post"> <table> <thead> <tr> <th> 이름 </th> <th> 성 </th> </tr> </th> </thead> <tfoot> <tr> <td colspan = "2"> <입력 유형 = "value ="save "/> </td> </tfoot> <td> <td> <td> <td> name = "users [0] .firstName"value = "aaa"/> </td> <td> <입력 이름 = "users [0] .lastName"value = "bbb"/> </td> </tr> <tr> <input name = "1] .firstname"CCC "/> <td> <td> <input 이름 = "사용자 [1] .lastname"value = "ddd"/> </td> </td> <td> <td> <input name = "users [20] .firstName"value = "eee"/> </td> <td> <입력 이름 = "users [20] .lastname"value = "fff" /> </td> </tr> </tbody> </table> </form>
현재 컨트롤러의 userform.getUsers ()는 목록의 크기를 21로 가져오고,이 21 개의 사용자 객체 중 어느 것도 NULL이지만 사용자 객체의 첫 번째 이름과 마지막 이름은 2에서 19입니다. 인쇄 결과 :
AAA -BBBCCC -DDDNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL- NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL -NULLNULL- NULLNULL -NULLNULL -NULLEE -FFF
6. 바인딩 설정 :
세트는 목록과 유사하며 객체에 바인딩되어야하며 컨트롤러 메소드의 매개 변수에 직접 쓸 수 없습니다. 그러나 세트 데이터를 바인딩 할 때 해당 수의 모델 객체를 먼저 설정 객체에 추가해야합니다.
모델 코드 :
공개 클래스 사용자 {private String firstName; 개인 문자열 마지막 이름; 공개 문자열 getFirstName () {return firstName; } public void setFirstName (String FirstName) {this.firstName = FirstName; } public String getLastName () {return lastName; } public void setLastName (String lastName) {this.lastName = lastName; }} public class useretform {private set <user> users = new Hashset <User> (); public useretform () {user.add (new user ()); user.add (new user ()); user.add (new user ()); } public set <user> getUsers () {return user; } public void setUsers (set <user> users) {this.users = 사용자; }}컨트롤러 코드 :
@requestmapping ( "sayth.do") public void test (useretform userform) {for (user user : userform.getusers ()) {system.out.println (user.getfirstname () + " -" + user.getlastname ()); }}양식 코드 :
<form action = "saysth.do"method = "post"> <table> <thead> <tr> <th> 이름 </th> <th> 성 </th> </tr> </th> </thead> <tfoot> <tr> <td colspan = "2"> <입력 유형 = "value ="save "/> </td> </tfoot> <td> <td> <td> <td> name = "users [0] .firstName"value = "aaa"/> </td> <td> <입력 이름 = "users [0] .lastName"value = "bbb"/> </td> </tr> <tr> <input name = "1] .firstname"CCC "/> <td> <td> <input 이름 = "사용자 [1] .lastName"value = "ddd"/> </td> </td> <td> <td> <input name = "users [2] .firstName"value = "eee"/> </td> <td> <입력 이름 = "2] .lastname"value = "fff" /> </td> </tr> </tbody> </table> </form>
기본적으로 목록 바인딩과 유사합니다.
최대 첨자 값이 세트 크기보다 크면 org.springframework.beans.invalidpropertyexception이 던져집니다. 따라서 사용할 때 약간 불편합니다.
7. 맵 바인딩 :
지도가 가장 유연합니다. 또한 객체에 바인딩되어야하며 컨트롤러 메소드의 매개 변수로 직접 쓸 수 없습니다.
모델 코드 :
공개 클래스 사용자 {private String firstName; 개인 문자열 마지막 이름; 공개 문자열 getFirstName () {return firstName; } public void setFirstName (String FirstName) {this.firstName = FirstName; } public String getLastName () {return lastName; } public void setLastName (String lastName) {this.lastName = lastName; }} public class usermapform {private map <string, user> user; public map <string, user> getUsers () {return user; } public void setUsers (map <string, user> user) {this.users = user; }} 컨트롤러 코드 :
@requestmapping ( "sayth.do") public void test (usermapform userform) {for (map.entry <string, user> enther : userform.getUsers ()) {system.out.println (enther.getKey () + ":" + enther.getValue (). getFirstname () + "); }} 양식 코드 :
<form action = "saysth.do"method = "post"> <table> <thead> <tr> <th> 이름 </th> <th> 성 </th> </tr> </th> </thead> <tfoot> <tr> <td colspan = "2"> <입력 유형 = "value ="save "/> </td> </tfoot> <td> <td> <td> <td> 이름 = "사용자 [ 'x']. firstName"value = "aaa"/> </td> <td> <input name = "user [ 'x']. lastname"value = "bbb"/> </td> </td> <tt> <td> <입력 이름 = "user [ 'y']] value ="ccc "/> <td> <td> 이름 = "사용자 [ 'y']. lastName"value = "ddd"/> </td> </td> <td> <td> <입력 이름 = "user [ 'z']. firstName"value = "eee"/> </td> <td> <입력 이름 = "user [ 'z']. /> </td> </tr> </tbody> </table> </form>
인쇄 결과 :
X : AAA -BBBY : CCC -DDDZ : EEE -FFF
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.