Springmvc-form表單
1.創建domain接收數據庫發送的數據
package com.helong.domain;
import lombok.Getter;
import lombok.Setter;
import java.util.Arrays;
@Setter@Getter
public class User {
private String username;
private Integer age;
private Integer gender;
private String hobby[];
private Pet pet;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", gender=" + gender +
", hobby=" + Arrays.toString(hobby) +
", pet=" + pet +
'}';
}
}
package com.helong.domain;
import lombok.Getter;
import lombok.Setter;
@Setter@Getter
public class Pet {
private String name;
private Integer id;
@Override
public String toString() {
return "Pet{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
2.前端jsp發送請求
<a href="${pageContext.request.contextPath}/update/1">測試update</a>
3.後臺前端控制器接收數據
package com.helong.web.controller;
import com.helong.domain.Pet;
import com.helong.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
@Controller
public class MyController {
@RequestMapping("update/{id}")
public String update(@PathVariable Integer id, Model model){
/*模擬從數據庫中獲取數據全部數據*/
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add("籃球");
arrayList.add("足球");
arrayList.add("乒乓球");
/*將所有的愛好的集合全部放到request域當中*/
model.addAttribute("allHobbys",arrayList);
/*模擬從數據庫獲取全部數據*/
ArrayList<Object> petList = new ArrayList<>();
Pet pet1 = new Pet();
pet1.setId(1);
pet1.setName("狗");
Pet pet2 = new Pet();
pet2.setName("貓");
pet2.setId(2);
Pet pet3 = new Pet();
pet3.setName("老虎");
pet3.setId(3);
petList.add(pet1);
petList.add(pet2);
petList.add(pet3);
/*將所有的寵物放到model裏面*/
model.addAttribute(petList);
System.out.println(id);
User user = new User();
user.setUsername("hel");
user.setAge(10);
user.setGender(1);
String[] hobby = new String[]{"籃球","足球"};
user.setHobby(hobby);
user.setPet(pet2);
model.addAttribute("user",user);
return "/result.jsp";
}
//接收form表單發送過來的數據,並跳轉到相應界面
@RequestMapping("update2")
public String update2(User user){
System.out.println(user);
return "/result2.jsp";
}
}
4.前端界面接收數據,渲染到form表單
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="fm"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>結果頁jsp</h1>
<%--
使用SpringMVC提供的from標籤
1.引入標籤庫:<%@ taglib uri="http://www.springframework.org/tags/form" prefix="fm"%>
2.注意在form必須要設置modelAttribute加上model中存放的key.如果不設置modelAttribute就可以將key值設置爲command
--%>
<%--
如果在form表單中不寫action的路徑的話,提交表單的時候就會直接提交會發送請求的界面
如果寫了action(提交表單的位置),就會直接到對應的前端控制器中找相應action
--%>
<fm:form modelAttribute="user" action="${pageContext.request.contextPath}/update2">
姓名:<fm:input path="username"/><br>
年齡:<fm:input path="age"/><br>
性別:<fm:radiobutton path="gender" value="0" label="男"/><%--單選框--%>
<fm:radiobutton path="gender" value="1" label="女"/><br>
<%--將所有的愛好都存放到items中,並且選中user對象中含有的愛好--%>
<%--注意在存放所有的items的時候要使用el表達式的方式,因爲那是從request域當中取數據--%>
愛好:<fm:checkboxes path="hobby" items="${requestScope.allHobbys}"/><br><%--複選框--%>
寵物:<fm:select path="pet.id" items="${requestScope.petList}" itemValue="id" itemLabel="name"/><br><%--下拉列表--%>
<input type="submit" value="修改">
</fm:form>
</body>
</html>