MS-Word 2010无法覆盖HTML实体,例如 - '“

时间:2016-05-04 05:25:34

标签: html jsp struts2 ms-word entities

我正在使用JSP和struts2-core-2.0.6.jar和ognl-2.6.11.jar来生成MS-Word。它工作得很完美。但是当我升级到struts2-core-2.3.28.1时.jar和ognl-3.0.14.jar,MS-Word无法打开。因为某些特殊的HTML字符(例如)被struts标记&mdash;转义为<s:property>在较高版本的jar.But MS-Word无法识别&mdash;。 例如,我有一个名为&#34; nameAndURL&#34;在数据库表中保存的字符串包含&#34; - &#34;与网址,像这样:

vincent—http://localhost/a/http.action?dataFormat=html&amp;ymdhms=20130101000000

由于某种原因,我无法将我的数据转换为:

vincent&mdash;http://localhost/a/http.action?dataFormat=html&amp;ymdhms=20130101000000

或:

vincent—http://localhost/a/http.action?dataFormat=html&ymdhms=20130101000000

jsp代码:

<s:iterator value="nameAndURL">
    <w:p wsp:rsidR="00AA5956" wsp:rsidRDefault="00571D82">
        <w:pPr>
            <w:ind w:left="426" w:first-line-chars="0" w:first-line="0" />
            <w:jc w:val="left" />
        </w:pPr>
        <w:r>
            <w:rPr>
                <wx:font wx:val="宋体" />
                <w:sz w:val="18" />
                <w:sz-cs w:val="18" />
            </w:rPr>
            <w:t><s:property escapeHtml="true"/></w:t>
        </w:r>
    </w:p>
</s:iterator>

问题是当我使用<s:property value="nameAndURL" escapeHtml="true"/>时,字符将被转义为&mdash; MS-Word无法识别。错误的MS-Word代码就像那样:

<w:r>                                                                                     
    <w:t>vincent&mdash;http://localhost/a/http.action?dataFormat=html&amp;ymdhms=20130101000000</w:t>
</w:r>

但如果我尝试使用<s:property value="nameAndURL" escapeHtml="false"/>,那么角色&#34; - &#34;将是 MS-Word可以识别的unescape,但是&amp;将是&,因为MS-Word无法识别<w:r> <w:t>vincent—http://localhost/a/http.action?dataFormat=html&ymdhms=20130101000000</w:t> </w:r> 。错误的MS-Word代码就像那样:

&mdash;

如何让MS-Word能够识别&<s:property>?或者我如何制作 unescape &amp但是可以转义&mdash;? 为什么&#34; - &#34;在升级到struts2-core-2.3.28.1.jar和ognl-3.0.14.jar后,以val partitioner = new HashPartitioner(5) sqlContext.createDataFrame( df.rdd.map(r => (r.getInt(1), r)).partitionBy(partitioner).values, df.schema ) 转义? 谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

如果您只想转发&,我建议您在操作(或业务层)中执行服务器端,保持其余未转义页面。

但是,这样你就不那么安全了,所以你也应该删除至少 <script>块。