3

我有一个通过 ajax 发送到控制器的表单。在该控制器中,输入被验证,并返回一个 json 对象。

如果有错误,我会在该 json 对象中返回一个值为“FAIL”的属性(字符串),以便我可以在客户端对其进行分析。

我要做的是渲染一个视图,并将其作为字符串属性放入该 json 对象中,这样当没有错误(成功)时,我可以使用该渲染视图中的 html 设置一个 div。

我怎样才能做到这一点?

有更好的方法吗?

4

2 回答 2

4

完成了!!

这是我的解决方案:

我使用了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);
 }

就这样!

于 2013-09-26T11:23:49.750 回答
1

如果您使用 JSP,则无法使用 Spring 呈现视图,因为 Spring 不编译 JSP 页面。根据视图的长度,一种解决方案是手动将视图构建为String(没有 JSP 标记的简单 HTML)并将其返回为 JSON。

编辑:看看这个Render Spring MVC to String or PDF Biju Kunjummen 答案

于 2013-09-23T12:59:41.427 回答