欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis + js 實現(xiàn)下拉列表二級聯(lián)動效果

 更新時間:2021年06月11日 14:20:04   作者:Yan Yang  
這篇文章給大家介紹基于Mybatis + js 實現(xiàn)下拉列表二級聯(lián)動效果,實現(xiàn)代碼分為前端界面實現(xiàn)和后端處理方法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

 一、業(yè)務(wù)需求

實現(xiàn)省份與城市的二級聯(lián)動

二、實現(xiàn)效果

在這里插入圖片描述

三、代碼實現(xiàn)

1. province_city.jsp

前端界面實現(xiàn)

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>二級聯(lián)動</title>
    <script src="/static/jQuery-1.11/jquery-1.11.3.min.js"></script>
    <script>
        // 頁面加載完畢執(zhí)行
        $(function () {
            let $p = $('#p');
            let $c = $('#c');
            // 給省份下拉框綁定值改變事件處理函數(shù),當(dāng)省份下拉框選項改變了,就發(fā)送請求獲取這個省份對應(yīng)
            // 城市數(shù)據(jù),拿到數(shù)據(jù)再使用 DOM 顯示在城市下拉框中
            $p.change(function () {
                // 獲取被選中省份下拉框的 option 的 value 屬性值,即省份 id 值
                let pid = $(this).val();

                // 清除舊有子元素(每次改變省份需要清除城市元素,否則城市元素會一直添加)
                $c.empty();
                // 請選擇也被清除了,所以需要添加回來
                $c.append('<option value="-1">請選擇</option>');
                // 判斷是否選中了省份
                if (pid >= 1) {
                    $.post('/cities', 'pid=' + pid, function (data) {
                        // 遍歷城市數(shù)組
                        data.forEach(function (value) {
                            console.log(value);
                            // 添加下拉元素
                            $c.append('<option value="' + value.id +'">' + value.name +'</option>');
                        });
                    });
                }
            });
        });
    </script>
</head>
<body>
省份:<select id="p">
    <option value="-1">請選擇</option>
    <!-- 遍歷后臺傳過來的省份集合 -->
    <c:forEach items="${allProvince}" var="province">
        <option value="${province.id}">${province.name}</option>
    </c:forEach>
</select>
城市:<select id="c">
    <option value="-1">請選擇</option>
</select>
</body>
</html>

2. TwoController

后臺處理方法

package com.yy.homework.web.controller;

import com.yy.homework.domain.City;
import com.yy.homework.domain.Province;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class TwoController {
    // 獲取省份 JSON 數(shù)據(jù)
    @RequestMapping("/provinces")
    public String getProvinces(Model model) {
        List<Province> allProvince = Province.getAllProvince();
        model.addAttribute("allProvince", allProvince);
        return "forward:/province_city.jsp";
    }

    // 獲取對應(yīng)省份的城市 JSON 數(shù)據(jù)
    @RequestMapping("/cities")
    @ResponseBody
    public List<City> getCities(Long pid) {
        return City.getCityByProvinceId(pid);
    }
}

2. Province

為了讓代碼少一點,看的更清晰些,我偽造了一些省份數(shù)據(jù),真實數(shù)據(jù)應(yīng)該是你自己從數(shù)據(jù)庫中查詢出來的,封裝成集合的形式給 Controller 調(diào)用

package com.yy.homework.domain;

import java.util.ArrayList;
import java.util.List;

public class Province {
    private Long id;
    private String name;
    public Province() {
    }
    public Province(Long id, String name) {
        this.id = id;
        this.name = name;
    }
    public Long getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // 獲取所有的省份
    public static List<Province> getAllProvince() {
        List<Province> provinces = new ArrayList<Province>();
        provinces.add(new Province(1L, "湖南"));
        provinces.add(new Province(2L, "廣東"));
        provinces.add(new Province(3L, "湖北"));
        return provinces;
    }
}

3. Province

這里是我偽造的一些城市數(shù)據(jù),真實數(shù)據(jù)應(yīng)該是你自己根據(jù)前臺頁面?zhèn)鬟^來的 省份 id 從數(shù)據(jù)庫中查詢出來的,封裝成集合的形式給 Controller 調(diào)用,返回前端界面

package com.yy.homework.domain;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @program: jQuery-test02
 * @ClassName City
 * @description:
 * @author: YanYang
 * @create: 2021-05-28 18:07
 **/
public class City {
    private Long id;
    private String name;

    public City() {
    }
    public City(Long id, String name) {
        this.id = id;
        this.name = name;
    }
    public Long getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public String toString() {
        return "City [id=" + id + ", name=" + name + "]";
    }
    /**
     * 根據(jù)省份 id 查詢省份中的城市!
     * @return
     */
    public static List<City> getCityByProvinceId(Long pid) {
        List<City> citys = new ArrayList<City>();
        if (pid == 1) {
            citys = Arrays.asList(
                    new City(11L, "長沙市"),
                    new City(12L, "株洲市"),
                    new City(13L, "湘潭市"),
                    new City(14L, "衡陽市"),
                    new City(15L, "邵陽市"),
                    new City(16L, "岳陽市"),
                    new City(17L, "常德市"),
                    new City(18L, "張家界市")
            );
        } else if (pid == 2) {
            citys = Arrays.asList(
                    new City(21L, "廣州市"),
                    new City(22L, "深圳市"),
                    new City(23L, "佛山市"),
                    new City(24L, "中山市"),
                    new City(25L, "珠海市"),
                    new City(26L, "汕頭市"),
                    new City(27L, "潮州市"),
                    new City(28L, "東莞市")
            );
        } else if (pid == 3) {
            citys = Arrays.asList(
                    new City(31L, "孝感市"),
                    new City(32L, "黃岡市"),
                    new City(33L, "咸寧市"),
                    new City(34L, "恩施州"),
                    new City(35L, "鄂州市"),
                    new City(36L, "武漢市"),
                    new City(37L, "荊門市"),
                    new City(38L, "襄陽市")
            );
        }
        return citys;
    }
}

總結(jié):

以上就是用二級聯(lián)動的代碼了,代碼僅供參考,歡迎討論交流。

以上就是Mybatis + js 實現(xiàn)下拉列表二級聯(lián)動的詳細內(nèi)容,更多關(guān)于Mybatis下拉列表二級聯(lián)動的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案

    Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案

    這篇文章主要介紹了Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring框架IOC容器底層原理詳解

    Spring框架IOC容器底層原理詳解

    在java當(dāng)中一個類想要使用另一個類的方法,就必須在這個類當(dāng)中創(chuàng)建這個類的對象,Spring將創(chuàng)建對象的權(quán)利給了IOC,在IOC當(dāng)中創(chuàng)建了ABC三個對象,那么我們我們其他的類只需要調(diào)用集合,大大的解決了程序耦合性的問題
    2022-07-07
  • Java數(shù)據(jù)結(jié)構(gòu)及算法實例:漢諾塔問題 Hanoi

    Java數(shù)據(jù)結(jié)構(gòu)及算法實例:漢諾塔問題 Hanoi

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:漢諾塔問題 Hanoi,本文直接給出實現(xiàn)代碼,代碼中包含大量注釋,需要的朋友可以參考下
    2015-06-06
  • SpringMVC Restful api接口實現(xiàn)的代碼

    SpringMVC Restful api接口實現(xiàn)的代碼

    本篇文章主要介紹了SpringMVC Restful api接口實現(xiàn)的代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • springboot集成shiro權(quán)限管理簡單實現(xiàn)

    springboot集成shiro權(quán)限管理簡單實現(xiàn)

    這篇文章主要介紹了springboot集成shiro權(quán)限管理簡單實現(xiàn),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 詳解spring boot引入外部jar包的坑

    詳解spring boot引入外部jar包的坑

    本篇文章主要介紹了spring boot引入外部jar的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 解決spring cloud服務(wù)啟動之后回到命令行會自動掛掉問題

    解決spring cloud服務(wù)啟動之后回到命令行會自動掛掉問題

    這篇文章主要介紹了解決spring cloud服務(wù)啟動之后回到命令行會自動掛掉問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java利用SpEL表達式實現(xiàn)權(quán)限校驗

    Java利用SpEL表達式實現(xiàn)權(quán)限校驗

    這篇文章主要為大家詳細介紹了Java如何利用SpEL表達式實現(xiàn)權(quán)限校驗功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • java定位死鎖的三種方法(jstack、Arthas和Jvisualvm)

    java定位死鎖的三種方法(jstack、Arthas和Jvisualvm)

    這篇文章主要給大家介紹了關(guān)于java定位死鎖的三種方法,分別是通過jstack定位死鎖信息、通過Arthas工具定位死鎖以及通過 Jvisualvm 定位死鎖,文中還介紹了死鎖的預(yù)防方法,需要的朋友可以參考下
    2021-09-09
  • 詳解Java設(shè)計模式之外觀模式

    詳解Java設(shè)計模式之外觀模式

    在Java開發(fā)中,設(shè)計模式是一種十分常見的編程思想,它可以幫助我們解決很多實際開發(fā)中的問題,本篇文章將介紹一種常見的設(shè)計模式——外觀模式,并結(jié)合實際的開發(fā)場景進行講解,需要的朋友可以參考下
    2023-06-06

最新評論