Java自學之路-Java中級教程-18:SpringMVC列表框select和單選框radio、多選框checkbox的處理
頁面表單還有很多控制元件,這一節介紹比較常用的列表框和單選框、多選框。列表框就是下拉列表選項,用在有多個選擇的情況,比如一大堆的國家和城市可以做成一個下拉列表供使用者選擇。單選框用在只能選擇一種選項的情況,比如性別要麼選男,要麼選女。多選框即是可以多選,比如興趣愛好可以選電腦,足球,象棋等多個。
在上一節的基礎上,再新建一個form3.jsp,表單設計如下:
這個jsp儲存在/WebContent/form3.jsp。顯示如下:
提交這個表單還需要增加兩個引數,這裡也給出需要更改的地方:
1,Person.java需要增加兩個屬性gender和hobby,並要生成getter和setter方法。同時,還重新生成了toString方法。
private String gender;
private String hobby;
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "Person [id=" + id + ", nation=" + nation + ", gender=" + gender + ", hobby=" + hobby + ", information=" + information + "]";
}
2,PersonJdbcTemplateDaoImpl.java的addPerson和findPersonById方法要改成:
public int add(Person person) throws Exception {
int updatedRow = this.getJdbcTemplate().update("insert into new_table (id, nation, information, gender, hobby) values (?,?,?,?,?)", person.getId(), person.getNation(), person.getInformation(), person.getGender(), person.getHobby());
return updatedRow;
}
public Person getPersonById(String id) throws Exception {
Map personrMap = this.getJdbcTemplate().queryForMap("select * from new_table where id=? limit 1", id);
Person person = new Person();
person.setId((Integer) personrMap.get("id"));
person.setNation((String) personrMap.get("nation"));
person.setInformation((String) personrMap.get("information"));
person.setGender((String) personrMap.get("gender"));
person.setHobby((String) personrMap.get("hobby"));
return person;
}
3, PersonController.java新增一個inputPerson的方法。
@RequestMapping(value = "/inputPerson", method = RequestMethod.POST)
public Object inputPerson(HttpServletRequest request, HttpServletResponse response, String id, String nation, String information, String hobby, String gender) {
try {
Person person = new Person();
person.setId(Integer.parseInt(id));
person.setNation(nation);
person.setInformation(information);
person.setGender(gender);
person.setHobby(hobby);
personService.addPerson(person);
Person personAdd = personService.findPerson(id);
request.setAttribute("person", personAdd);
} catch (Exception e) {
e.printStackTrace();
}
return "jsp/person.jsp";
}
4,要修改new_table資料表,執行的sql語句為:
ALTER TABLE `newdb`.`new_table` ADD COLUMN `gender` VARCHAR(4) NULL AFTER `information`, ADD COLUMN `hobby` VARCHAR(255) NULL AFTER `gender`;
這樣再重啟下Tomcat伺服器,訪問路徑http://localhost/calculateWeb/form3.jsp,輸入表單的內容點選提交按鈕,即可得到結果。
<span font-size:medium;white-space:normal;"="" style="word-wrap: break-word; margin: 0px; padding: 0px;">person: Person [id=7, nation=null, gender=male, hobby=computer,football, information=This is a US person.]
如果表單的項很多,那麼PersonController.java的方法引數也會變得很多,這讓方法變得很長也不好看。可以用下面的方法來修改一下:
新增一個類PersonForm.java,包名為.form。
public class PersonForm {
private String id;
private String nation;
private String information;
private String hobby;
private String gender;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
public String getInformation() {
return information;
}
public void setInformation(String information) {
this.information = information;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
同時修改PersonController.java的inputPerson方法。
@RequestMapping(value = "/inputPerson", method = RequestMethod.POST)
public Object inputPerson(HttpServletRequest request, HttpServletResponse response, PersonForm personForm) {
try {
Person person = new Person();
person.setId(Integer.parseInt(personForm.getId()));
person.setNation(personForm.getNation());
person.setInformation(personForm.getInformation());
person.setGender(personForm.getGender());
person.setHobby(personForm.getHobby());
personService.addPerson(person);
Person personAdd = personService.findPerson(personForm.getId());
request.setAttribute("person", personAdd);
} catch (Exception e) {
e.printStackTrace();
}
return "jsp/person.jsp";
}
重啟Tomcat伺服器訪問表單,同樣可以接收和儲存表單資料。也就是引數被SpringMVC封裝成了PersonForm的物件,把這些引數取出來,就可以從這個引數物件中取出來了。
配套進階視訊教程:
Java視訊教程