我有一个通过 ajax 发送到控制器的表单。在该控制器中,输入被验证,并返回一个 json 对象。
如果有错误,我会在该 json 对象中返回一个值为“FAIL”的属性(字符串),以便我可以在客户端对其进行分析。
我要做的是渲染一个视图,并将其作为字符串属性放入该 json 对象中,这样当没有错误(成功)时,我可以使用该渲染视图中的 html 设置一个 div。
我怎样才能做到这一点?
有更好的方法吗?
我有一个通过 ajax 发送到控制器的表单。在该控制器中,输入被验证,并返回一个 json 对象。
如果有错误,我会在该 json 对象中返回一个值为“FAIL”的属性(字符串),以便我可以在客户端对其进行分析。
我要做的是渲染一个视图,并将其作为字符串属性放入该 json 对象中,这样当没有错误(成功)时,我可以使用该渲染视图中的 html 设置一个 div。
我怎样才能做到这一点?
有更好的方法吗?
完成了!!
这是我的解决方案:
我使用了thymeleaf,所以我可以在我的控制器中呈现一个页面。
我使用了我在网上找到的不同信息的某些部分.. 不记得所有的,所以谢谢和抱歉没有把链接放在这里....
首先,我通过 ajax 将表单数据发送到控制器。在控制器中,我创建一个对象并将状态字段设置为失败的成功,如果失败我返回设置我的对象的错误信息,如果成功我将一个字段设置为我的页面响应的 html。所以我将此对象发送回客户端(JSON)并分析字段。
下面是代码:
控制器:
@RequestMapping(value = "/calcdireto.json", method = RequestMethod.POST)
public @ResponseBody CalcDiretoResponse processFormAjaxJson(Model model,
@ModelAttribute(value = "formBean") @Valid CalcDiretoFormBean cdBean,
BindingResult result) {
CalcDiretoResponse res = new CalcDiretoResponse();
if (!result.hasErrors()) {
res.setValStatus("SUCCESS");
final WebContext ctx = new WebContext(request,servletContext,request.getLocale());
res.setHtml(this.templateEngine.process("subpage", ctx));
return res;
} ...
在页面中:
if (response.valStatus == 'SUCCESS') {
$("#pp-result").html(response.htm);
}
就这样!
如果您使用 JSP,则无法使用 Spring 呈现视图,因为 Spring 不编译 JSP 页面。根据视图的长度,一种解决方案是手动将视图构建为String
(没有 JSP 标记的简单 HTML)并将其返回为 JSON。
编辑:看看这个Render Spring MVC to String or PDF Biju Kunjummen 答案