我有一个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成功部分处理页面,因为当模型发送到页面时,我已经使用百里香进行了处理。
答案 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
希望有帮助。