如何将Spring MVC视图渲染成字符串

3
我有一个表单通过ajax发送到控制器。在那个控制器中,对输入进行验证,并返回一个json对象。 如果有错误,我会在该json对象中返回一个属性(字符串),其值为“FAIL”,以便我可以在客户端分析它。 我正在尝试的是渲染视图,并将其作为字符串属性放入该json对象中,以便当没有错误(SUCCESS)时,我可以使用该渲染视图的HTML设置一个div。 如何实现这一点? 是否有更好的方法来实现这一点?

请添加您尝试过的代码。 - Murali Murugesan
我没有代码...但我有进行验证的代码和分析JSON返回对象的JavaScript代码。这个工作正常...我需要的是关于如何呈现视图并将呈现视图的HTML返回到字符串中的一些信息... - RLuceac
取决于您使用的视图技术。如果您使用的是类似Velocity的东西,您可以将模板读入字符串中。 - Bart
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4

已完成!

这是我的解决方案:

我使用Thymeleaf,所以可以在控制器中呈现页面。

我使用了一些我在网上找到的不同信息,但不记得它们全部,所以感谢和抱歉没有在这里放链接...

首先,我通过ajax将表单数据发送到控制器。在控制器中,我创建一个对象并将状态字段设置为SUCCESS或FAIL,如果失败,我返回设置错误信息的对象,如果成功,我设置一个字段为页面响应的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);
 }
这是全部内容!

1
如果您正在使用JSP,则无法使用Spring渲染视图,因为Spring不会编译JSP页面。根据视图的长度,一种解决方案是手动构建视图作为String(简单HTML无JSP标记),并将其作为JSON返回。 编辑: 请查看此Render Spring MVC to String or PDF Biju Kunjummen答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,