Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Spring MVC模型和视图属性_Javascript_Jquery_Ajax_Spring_Twitter Bootstrap - Fatal编程技术网

Javascript Spring MVC模型和视图属性

Javascript Spring MVC模型和视图属性,javascript,jquery,ajax,spring,twitter-bootstrap,Javascript,Jquery,Ajax,Spring,Twitter Bootstrap,嗨。 我正在尝试将SpringMVC与bootstrap模式集成在一起,我想从模式表单中选择项目,并通过jQueryAjax将其设置为过滤器。 主要思想:当用户单击按钮选择项目时,显示模式弹出窗口,此弹出窗口必须允许用户在列表中搜索(ajax)并单击提交按钮选择项目。 要刷新弹出数据,我将返回带有过滤项目列表的ModelAndView,然后,如果用户单击“提交”,我将所选索引发送到服务器,在那里我可以通过列表中的索引获取id,但ModelMap(以及Model)不包含此列表 我做错了什么 我的结

嗨。

我正在尝试将SpringMVC与bootstrap模式集成在一起,我想从模式表单中选择项目,并通过jQueryAjax将其设置为过滤器。
主要思想:当用户单击按钮选择项目时,显示模式弹出窗口,此弹出窗口必须允许用户在列表中搜索(ajax)并单击提交按钮选择项目。
要刷新弹出数据,我将返回带有过滤项目列表的ModelAndView,然后,如果用户单击“提交”,我将所选索引发送到服务器,在那里我可以通过列表中的索引获取id,但ModelMap(以及Model)不包含此列表
我做错了什么

我的结构如下:

主要JSP:

main.jsp 用于处理JavaScript的控制器方法:

@RequestMapping(method = RequestMethod.GET, value = "departments")
public ModelAndView getDepartments(@RequestParam(required = false) String name, Model model) {
    LOG.debug(name);
    model.addAttribute("dpts", departmentService.filterByName(name));
    return new ModelAndView("selectDeptDialog/deptTable");
}

@RequestMapping(method = RequestMethod.POST, value = "deptSelected")
public ModelAndView deptSelected(@RequestParam Long index, ModelMap model) {
    SearchModel sModel = (SearchModel) model.get("searchModel");
    sModel.setDept(index);
    Object depts = model.get("dpts");// = null

    return new ModelAndView("filter", model);
}

但当获取deptSelected中的部门列表时,该列表为空。


提前谢谢

模型映射不会在请求之间保持其状态。但是,您可以使用@SessionAttribute获得一些相同的结果,但是,我认为这也不会得到您想要的结果。

具体来说,什么是“不起作用的”?很抱歉,没有明确的问题解释。编辑问题-当获取deptSelected中的部门列表时,java方法中的“索引”是否为null?调试时ModelMap是什么样子?@ElGuapo否,索引应为正数。ModelMap包含来自使用ModelAttribute注释的控制器方法的值。当我使用模型中的键值对从视图发送请求时,我希望这个键值对在处理这个请求的控制器方法中可用。但是在填充“dpts”属性(model.addAttribute(“dpts”,departmentService.filterByName(name));)之后,我无法在deptSelected方法中获取它,因为ModelMap不包含这样的键。除非我读错了,否则您希望在服务调用之间维护这两个方法中的模型?每次调用您的方法时,模型都会被重写(我相当肯定)。
<f:form method="get" cssClass="search" action="${pageContext.request.contextPath}/search"
    commandName="searchModel">
    ....
    <div class="form-group">
        <label class="control-label" for="searchDpt"><s:message code="label.department"/></label>

        <div class="controls">
            <f:input id="searchDpt" cssClass="form-control col-sm-8" cssStyle="width: 75%;" path="dept"/>
            <button type="button" id="dsb_filter" class="btn btn-default col-sm-3" data-toggle="modal" data-target="#selectDeptModal"><span
                    class="glyphicon glyphicon-list"></span></button>
        </div>
    </div>
    ....
</f:form>
<div id="selectDeptModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"
    style="display: none;">
    ....
    <div class="table-responsive" id="dept_table">
        <jsp:include page="deptTable.jsp"/>
    </div>
    <button type="button" class="btn btn-default" onclick="selectDept();"><s:message code="label.select"/></button>
</div>
function search() {
    $.ajax({
        url: "departments",
        data: "name=" + $("#dpt_filter").val(),
        success: function (response) {
            $("#dept_table").html(response);
        }
    });
}

function getSelectedIndex() {
    var table = $("#dept_table").find("table")
    var selectedRows = table.find("tr.selected-row");
    var elements = [];
    if (selectedRows.length > 0) {
        table.find("tr.selected-row td.index-col").each(function (i, el) {
            elements.push(parseInt($(el).text()));
        });
    }
    return elements;
}

function selectDept() {
    var selected = getSelectedIndex()[0];

    if (selected == undefined || selected.length == 0) {
        $("#no_selection").removeClass("hidden");
        return;
    }

    $('#selectDeptModal').modal('hide');
    $.ajax({
        type: "POST",
        url: "deptSelected",
        data: { index: selected},
        success: function (response) {
            $("#filter").html(response);
        }
    });
}
@RequestMapping(method = RequestMethod.GET, value = "departments")
public ModelAndView getDepartments(@RequestParam(required = false) String name, Model model) {
    LOG.debug(name);
    model.addAttribute("dpts", departmentService.filterByName(name));
    return new ModelAndView("selectDeptDialog/deptTable");
}

@RequestMapping(method = RequestMethod.POST, value = "deptSelected")
public ModelAndView deptSelected(@RequestParam Long index, ModelMap model) {
    SearchModel sModel = (SearchModel) model.get("searchModel");
    sModel.setDept(index);
    Object depts = model.get("dpts");// = null

    return new ModelAndView("filter", model);
}