Различные методы связывания параметров SpringMVC
1. Основной тип данных (примером Int в качестве примера другие похожи):
Код контроллера:
@Requestmapping ("speatth.do") public void test (int count) {}Код формы:
<form action = "showerth.do" method = "post"> <input name = "count" value = "10" type = "text" />.......... form> Form>
Если значение имени ввода в форме согласуется с именем переменной параметра контроллера, привязка данных может быть завершено. Если это непоследовательно, вы можете использовать аннотацию @requestparam. Следует отметить, что если основной тип данных определяется в параметре метода контроллера, но данные, представленные на странице, являются нулевыми или «», произойдут исключения для преобразования данных. То есть необходимо убедиться, что данные, передаваемые формой, не могут быть нулевыми или «», поэтому в процессе разработки лучше всего определить тип данных параметра как тип упаковки для данных, которые могут быть пустыми, см. В следующем примере.
2. Тип упаковки (примером целого числа, другие похожи):
Код контроллера:
@Requestmapping ("speakth.do") public void test (integer count) {}Код формы:
<form action = "showerth.do" method = "post"> <input name = "count" value = "10" type = "text" />.......... form> Form>
Это в основном то же самое, что и основной тип данных. Разница в том, что данные, передаваемые формой, могут быть нулевыми или «». Приведенный выше код является примером. Если в форме Num - «» или нет входа NUM в форме, то значение Num в параметре метода контроллера равна нулю.
3. Пользовательский тип объекта:
Код модели:
Пользователь открытого класса {Private String FirstName; частная строка Lastname; public String 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 ("speatth.do") public void test (пользователь пользователь) {}Код формы:
<form action = "showerth.do" method = "post"> <input name = "firstname" value = "zhang" type = "text"/> <input name = "lastname" value = "three" type = "text" />............/ form>
Это очень просто, просто сопоставьте имя свойства объекта и значение имени ввода один за другим.
4. Настройте тип составного объекта:
Код модели:
открытый класс ContactInfo {Private String Tel; частный строковый адрес; public String getTel () {return tel; } public void Settel (String tel) {this.tel = tel; } public String getAddress () {return Adder; } public void setAddress (строковый адрес) {this.address = address; }} public Class User {private String FirstName; частная строка Lastname; Частный контакт INFO ContactInfo; public String 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 ("speakth.do") public void test (пользователь пользователя) {system.out.println (user.getFirstName ()); System.out.println (user.getlastname ()); System.out.println (user.getContactInfo (). GetTel ()); System.out.println (user.getContactInfo (). GetAddress ());} Код формы:
<form action = "showerth.do" method = "post"> <input name = "firstName" value = "Zhang" /> <br> <input name = "lastname" value = "three" /> <br> <name = "contactInfo.tel" value = "13809908909" /> <br> <input name = "value.address" bei -gaidJian ' /> <br> <input name = "valy =" beaiian gaidjir gaid /> <br> <input type = "Отправить" value = "save" /> < /form>
В объекте пользователя есть атрибут ContactInfo. Код в контроллере согласуется с тем, что говорится в пункте 3. Однако в коде формы вам необходимо использовать «Имя атрибута (атрибут типа объекта). Имя атрибута», чтобы назвать входное имя.
5. Перепись связывания:
Список должен быть связан с объектом и не может быть записан непосредственно в параметрах метода контроллера.
Код модели:
Пользователь открытого класса {Private String FirstName; частная строка Lastname; public String 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 list <user> getUsers () {return users; } public void setUsers (list <user> пользователи) {this.users = users; }} Код контроллера:
@Requestmapping ("shopth.do") public void test (userListform userform) {for (пользователь пользователя: userform.getUsers ()) {System.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Код формы:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input name = "users [0] .firstName" value = "aaa"/> </td> <td> <name = "user [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> <pint name = "users [1] .firstName" value = "ccc"/> </td> <Td> name = "users [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "users [2] .firstName" value = "eee"/> </td> <td> <pint name = "users [2] .lastName"/"fff"/> </td> </traby> <//traby> </traby> </traby> <//traby> </traby> </traby> </traby> </traby>
Фактически, это несколько похоже на привязку данных ContantInfo в пользовательском объекте в 4 -й точке, но свойства в объекте userListform здесь определяются как список, а не обычные пользовательские объекты. Поэтому вам необходимо указать подписку списка в форме. Стоит отметить, что Spring создаст объект списка с максимальным значением индекса как размер. Поэтому, если в форме есть динамическое добавление и удаление строк, следует уделять особое внимание. Например, после использования таблицы значение индекса будет несовместимо с фактическим размером после того, как пользователь удаляет строки и добавляет строки несколько раз во время использования. В настоящее время только объекты в списке будут иметь значения в форме, в которых есть подписки, в противном случае они будут нулевыми. См. Пример:
Код формы:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input name = "users [0] .firstName" value = "aaa"/> </td> <td> <name = "user [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> <pint name = "users [1] .firstName" value = "ccc"/> </td> <Td> name = "users [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "users [20] .firstname" value = "eee"/> </td> <td> <pint name = "users [20] .lastName"/> "/> </td> </traby> </traby> </traby> </tbody> </traby> <//traby> </tbody> </tbody> </tbody> </tbody> </tbody>
В настоящее время userform.getUsers () в контроллере получает размер списка 21, и ни один из этих 21 пользовательских объектов не является нулевым, но первое имен и имя в пользовательских объектах от 2 до 19 является нулевым. Результат печати:
AAA - BBBCCC - DDDNULL - NULLNULL - NULLNULL - NULLNULL - NULLNULL - NULLNULL - NULLNULL - NULLNULL - NULLNULL - NULLNUL nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. Установите привязку:
Набор аналогичен списку, и он также должен быть связан с объектом и не может быть записан непосредственно в параметрах метода контроллера. Однако при установлении данных привязки соответствующее количество объектов модели должно быть добавлено сначала в объекте SET.
Код модели:
Пользователь открытого класса {Private String FirstName; частная строка Lastname; public String 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 usersetForm {private Set <SOMENT> users = new HashSet <SOMENT> (); public usersetform () {users.add (new user ()); users.add (new user ()); users.add (new user ()); } public set <SOMENT> GETUSERS () {return users; } public void setUsers (set <user> users) {this.users = users; }}Код контроллера:
@Requestmapping ("shopth.do") public void test (usersetform userform) {for (user user: userform.getusers ()) {System.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Код формы:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input name = "users [0] .firstName" value = "aaa"/> </td> <td> <name = "user [0] .lastName" value = "bbb"/> </td> </tr> <tr> <td> <pint name = "users [1] .firstName" value = "ccc"/> </td> <Td> name = "users [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "users [2] .firstName" value = "eee"/> </td> <td> <pint name = "users [2] .lastName"/"fff"/> </td> </traby> <//traby> </traby> </traby> <//traby> </traby> </traby> </traby> </traby>
В основном похожи на привязку списка.
Следует отметить, что если максимальное значение индекса больше, чем размер набора, будет брошена org.springframework.beans.invalidpropertyexception. Поэтому при его использовании немного неудобно.
7. Переплет MAP:
Карта самая гибкая. Он также должен быть связан с объектом и не может быть записан непосредственно в параметрах метода контроллера.
Код модели:
Пользователь открытого класса {Private String FirstName; частная строка Lastname; public String 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> users; public Map <string, user> getUsers () {return users; } public void setUsers (map <string, user> users) {this.users = users; }} Код контроллера:
@Requestmapping ("speakth.do") public void test (usermapform userform) {for (map.entry <string, user> inpit: userform.getUsers (). Intryset ()) {System.out.println (entry.getKey () + ":" + entry.getValue (). GetFirStName () + " - + vent.GetAlue }} Код формы:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input name = "users ['x']. firstname" value = "aaa"/> </td> <td> <name = "users ['x']. name = "users ['y']. /> </td> </tr> </tbody> </table> </form>
Результат печати:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.