jfinal实现前端二级联动

系统想用一个二级联动的功能,在论坛上搜到了一个提问,按波总给的思路,实现了该功能。欢迎大家指正,谢谢。

参考思路见该贴波总的回复:https://jfinal.com/feedback/3392

前端页面创建复选框:

<div class="row mb-3 align-items-end">
    <label class="form-label col-3 col-form-label">目录</label>
    <div class="col">
        <select class="form-select" id="myGroupCategoryId" autocomplete="off"
                data-rule="required" name="fav.category_id"
                onchange="getMyGroup('/group/getGroupByCatId/#(id)')">
            <option value="">请选择</option>
            #for(x : myCategory)
            <option value="#(x.id)">#(x.name)</option>
            #end
        </select>
    </div>
</div>
<div class="row mb-3 align-items-end">
    <label class="form-label col-3 col-form-label">分组</label>
    <div class="col">
        <select class="form-select" id="myGroupId" autocomplete="off"
                data-rule="required" name="fav.group_id">

        </select>
    </div>
</div>

【目录】下拉框选项

List<FavoriteCategory> myCategories = categoryService.findAllOrderBySort(getLoginAccountId());
set("myCategory", myCategories);


【分组】下拉框中选项的查询结果

public void getGroupByCatId() {
    int netCatId = getInt("catId");
    List<FavoriteGroup> groups = groupService.getGroupsByCatId(netCatId);
    set("myGroup", groups);
    render("/_view/front/group.html");
}



Ajax方法:

function getMyGroup(url) {
    let catId = $("#myGroupCategoryId").val();
    $.ajax({
        url: url,
        type: "post",
        dataType: "html",
        data: {"catId": catId},
        success: function (data) {
            $("#myGroupId").empty();
            $("#myGroupId").prepend(data);
        },
        error: function () {
            FLayerMsgBox.alert("网络通讯异常", 2);
            if (error) {
                error();
            }
        }
    });
    return false;
}


group.html页面代码

<option value="">请选择</option>
#for(x : myGroup)
<option value="#(x.id)">#(x.name)</option>
#end


评论区

山东小木

2021-12-06 18:03

封装成js 就行了 jbolt里封装AutoSelect组件 主要核心思路就是json通讯获取数据 js里拿到数据 弄出options就行了

热门分享

扫码入社