【问题标题】:How do i pass raw HTML from java spring controller to jsp view如何将原始 HTML 从 java spring 控制器传递到 jsp 视图
【发布时间】:2017-02-14 00:02:09
【问题描述】:

我只是出于可行性目的而尝试一些东西。

我正在尝试将 Spring 控制器中的原始 HTML 代码传递给特定视图。但是我想知道是否可以将原始 html 转换为字符串,然后将 HTML 字符串传递给视图。 “字符串消息”中有错误,因为我没有将 HTML 格式化为字符串。

@Controller
public class TestController {

    @RequestMapping(value = "/test", produces = "text/html;charset=UTF-8")
    public ModelAndView test (ModelMap model) {
        //Map<String, Object> cat = (Map<String, Object>) incidentService.getIncidentCategories();

        ModelAndView mv = new ModelAndView("test2.jsp");
        String message = <p><img alt="alt text" src="http://localhost:8080/aston.jpg" style="height:974px; width:2386px" />This is my textarea to be replaced with CKEditor.</p> // 
        return new ModelAndView("welcome", "message", message);

        return mv;
    }

}

【问题讨论】:

  • 您的代码有编译错误。你能修好它们吗?
  • message 字符串应该是您希望从控制器方法返回的完整标记,还是希望将其从另一个模板插入到更多模板中?

标签: java html spring jsp spring-mvc


【解决方案1】:

您可以使用@RestController@ResponseBody,不会通过viewResolver

@RestController 
public class TestController {

    @RequestMapping(value = "/test")
    public String text1() {
      return "<p>hello world</p>";
    }
}

@Controller
public class TestController {

    @RequestMapping(value = "/test")
    public @ResponseBody String text2() {
      return "<p>hello world again!</p>";
    }
}

【讨论】:

    【解决方案2】:

    你可以使用&lt;div class="well"&gt;&lt;c:out value="${message}" escapeXml="false"&gt;&lt;/c:out&gt;&lt;/div&gt;

    您还需要在您的消息中转义引号 String message = "&lt;p&gt;&lt;img alt=\"alt text\" src=\"http://localhost:8080/aston.jpg\" style=\"height:974px; width:2386px\" /&gt;This is my textarea to be replaced with CKEditor.&lt;/p&gt;"

    &lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gt; 添加到您的jsp 页面。

    假设你使用的是jsp页面。

    【讨论】:

      【解决方案3】:

      有两种方法可以从 Spring 控制器返回 HTML。

      如果您使用的是最新版本的 Spring。请使用 @RequestMapping 中的“produces”属性

       @RequestMapping(value = { "/testUrl" }, method = RequestMethod.GET,
          produces = MediaType.TEXT_HTML_VALUE)
      

      如果您使用的是 版本的 Spring,那么简单

      response.setContentType("text/html");
      response.getWriter().println(...) // print your html here
      

      【讨论】:

        【解决方案4】:

        所以我基本上来这个解决方案。 在 spring 控制器中,我将编码的转义 html 传递给视图。

        mv.addObject("描述", HtmlUtils.htmlEscape(eknow.get(0).getDescription()));

        未转义:"

        测试 12345

        "

        转义:

        测试 12345

        http://localhost:8080/logo.gif&quot; style="height:303px;宽度:1191px" />

        然后在视图中,我将转义值存储在隐藏输入中。

        然后我通过 jquery 获取元素并将操作从转义反转为未转义。

        var testing = $("#test").val();
        alert(decodeURIComponent(testing));
        CKEDITOR.instances.description.setData(decodeURIComponent(testing));
        

        这将为我的 HTML 编辑器设置和呈现 html 原始代码。

        如果您知道任何优化此功能的方法,请告诉我。但这个解决方案有效。

        【讨论】:

        • 转义:<p>测试 12345</p> <p><img alt=“替代文本”; src="localhost:8080/logo.gif&quot;样式=“高度:303px;宽度:1191px"" /></p>
        猜你喜欢
        • 1970-01-01
        • 2012-08-15
        • 2013-11-23
        • 2021-11-23
        • 2016-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        相关资源
        最近更新 更多