Springmvc-form表單

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章