【问题标题】:HTML output with jsp:include and json-taglib带有 jsp:include 和 json-taglib 的 HTML 输出
【发布时间】:2010-12-01 09:09:59
【问题描述】:

我在 json-taglib 的 json:property 元素中使用 jsp:include。这样做的问题是,包含的 JSP 页面中的所有 HTML 元素都会在某些时候被剥离,只剩下纯文本。我已经删除了所有换行符,所以结果应该是有效的 JSON 数据。

如何获取 json-taglib 返回的完整 HTML?

下面是一个演示情况的sn-p。

<%@ page language="java" %>
<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib uri="http://www.atg.com/taglibs/json" prefix="json" %>

<json:object>
  <json:property name="id" value="${element.id}" />
  <json:property name="html" escapeXml="false">
    <jsp:include page="/templates/generate-component.jsp">
      <jsp:param name="element_id" value="${element.id}" />
    </jsp:include>
  </json:property>
</json:object>

【问题讨论】:

    标签: html json jsp


    【解决方案1】:

    也许您应该对传递给 json-taglib 的数据进行编码。

    问候。

    【讨论】:

    • 也许是这样。有什么建议在哪里进行编码? jsp:include 中没有转义相关的属性,这比完美更适合...
    • IIRC, escapeXml="true" 适用于直接包含的页面,但嵌套包含失败。再加上JSON数据必须在javascript中手动取消转义,这有点麻烦。
    【解决方案2】:

    一种解决方案是将 jsp:include 包装在 &lt;c:out&gt; 标记中并(错误地)使用 body-as-default-value,如下所示:

    <c:out value="${null}">
      <jsp:include ...>
        <jsp:param ... />
      </jsp:include>
    </c:out>
    

    但是,这在包含的 JSP 本身使用 jsp:include 的情况下不起作用。

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多