Spring Boot Ajax发布表单与模型和百里香一起提交

时间:2018-10-25 13:59:18

标签: jquery ajax spring spring-boot thymeleaf

我有一个spring boot控制器,它返回一个视图,我想通过使用ajax端点来更改它,但是同时从带有modelAttribute的表单中获取值,然后在页面上发送一个或多个列表并与百里香一起遍历这些清单。有可能吗? 这是控制器:

@RequestMapping(value="/search", method=RequestMethod.POST)
    @ResponseBody
    public String search(@ModelAttribute("specification") Specification specification, Model model) {

        List<SearchResultAutovit> list;

        list = scrapper.searchMethod(specification.getPrice,specification.getModel);

        if (list == null || list.isEmpty()) { 
            model.addAttribute("msg","Something"); 
        } else { 
            model.addAttribute("listaAutovit", list); 
        }
        return "?";
    }

Ajax请求:

$(".btn.btn-danger").on('click', {function fire_ajax_submit() {
    var str = $(".form-inline.justify-content-center").serialize();

    $.ajax({
        type:"post",
        data:str,
        url:"/search",
        async: false,
        dataType: "json",
        success: function(){
           alert("success");
        }
    });

}

我不想从ajax成功部分处理页面,因为当模型发送到页面时,我已经使用百里香进行了处理。

1 个答案:

答案 0 :(得分:2)

因此,您想要的是使用List l = new LinkedList(); l.add(null); assert l.size() > 0; Object o = l.poll(); // == null 请求接收Thymeleaf片段。您可以通过更改以下代码并添加片段来添加属性来实现这一点。我们将创建一个名为list的ajax文件,其中将包含片段。

胸腺片段

html

控制器

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<th:block th:fragment="list">
    <th:block th:if="${list != null}">
        <th:block th:each="iterator: ${list}">
            <!-- Do something -->
        </th:block>
    </th:block>
    <th:block th:if="${msg != null}">
        <p th:text=${msg}></p>
    </th:block>
</th:block>
</body>
</html>

然后在您的@RequestMapping(value="/search") public String search(@ModelAttribute("specification") Specification specification, Model model) { List<SearchResultAutovit> list; list = scrapper.searchMethod(specification.getPrice,specification.getModel); if (list == null || list.isEmpty()) { model.addAttribute("msg", "Error!"); model.addAttribute("list", list); } else { model.addAttribute("list", list); model.addAttribute("msg", null); } return "layouts/list :: list"; } 上,您只需要接收结果并将其附加到元素即可。

ajax

希望有帮助。