我保证,我已经在谷歌上搜索过了。
我有一个Spring 4应用程序,它使用Thymeleaf收集表单数据并将其放入数据库。工作非常好,除了我希望我的应用程序在用户点击提交按钮后离开表单页面,这样他们就可以继续编辑了。
每次单击submit时,将调用Controller并返回视图,这将导致页面刷新。我想要取消刷新,并添加一个警报来确认保存。
因此,我开始将表单提交转换为AJAX,并意识到这将违背使用Thymeleaf的目的。Thymeleaf已经将表单字段映射到后台bean,并且做得很好,那么为什么要替换这个机制呢?
那么,是否有办法让Spring控制器处理提交请求,而不返回视图的新实例?
我尝试不返回视图,但这导致了一个错误,因为没有将任何内容映射到模型属性。我尝试使用@ResponseBody并返回数据,但这导致JSON在web页面中呈现,而且我无法弄清楚如何使该数据愉快并对其进行操作。
我还试图找到一种连接到submit按钮的方法,尝试调用javascript preventDefault(),但在那里没有任何进展。
非常感谢你的建议。
以下是我的控制器代码,非常简单:
@SessionAttributes("adminFormAjax")
@Controller
public class TestController
{
@Autowired
private AdminDataRepository rep;
@RequestMapping(value="/admin_ajax", method=RequestMethod.GET)
public String adminFormAjax(Model model)
{
AdminData ad = rep.findById(1L);
// If there is no configuration record, create one and assign the primary key as 1.
if(ad == null)
{
ad = new AdminData();
ad.setId(1L);
}
model.addAttribute("adminFormAjax", ad);
return "adminFormAjax";
}
@RequestMapping(value="/admin_ajax", method=RequestMethod.POST)
public @ResponseBody AdminData adminSubmit(@ModelAttribute("adminFormAjax") AdminData ad, Model model)
{
// rep.save(ad);
model.addAttribute("adminFormAjax", ad);
return ad;
}
}发布于 2020-11-09 15:32:16
我使用rest控制器和ajax来处理这个问题
https://stackoverflow.com/questions/31546424
复制相似问题