我正在使用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标记—
转义为<s:property>
在较高版本的jar.But MS-Word无法识别—
。
例如,我有一个名为&#34; nameAndURL&#34;在数据库表中保存的字符串包含&#34; - &#34;与网址,像这样:
vincent—http://localhost/a/http.action?dataFormat=html&ymdhms=20130101000000
由于某种原因,我无法将我的数据转换为:
vincent—http://localhost/a/http.action?dataFormat=html&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"/>
时,字符—
将被转义为—
MS-Word无法识别。错误的MS-Word代码就像那样:
<w:r>
<w:t>vincent—http://localhost/a/http.action?dataFormat=html&ymdhms=20130101000000</w:t>
</w:r>
但如果我尝试使用<s:property value="nameAndURL" escapeHtml="false"/>
,那么角色&#34; - &#34;将是—
MS-Word可以识别的unescape,但是&
将是&
,因为MS-Word无法识别<w:r>
<w:t>vincent—http://localhost/a/http.action?dataFormat=html&ymdhms=20130101000000</w:t>
</w:r>
。错误的MS-Word代码就像那样:
—
如何让MS-Word能够识别&
或<s:property>
?或者我如何制作—
unescape &
但是可以转义—
?
为什么&#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
)
转义?
谢谢你的回答。
答案 0 :(得分:0)
如果您只想转发&
,我建议您在操作(或业务层)中执行服务器端,保持其余未转义页面。
但是,这样你就不那么安全了,所以你也应该删除至少 <script>
块。