前几天遇到一个 Struts 问题如下 :
使用 <html:optionsCollection/>标签显示一个属性值, 这个属性值为 “ XXX”, 看清楚喽,最前面有一个空格, 画面出来以后,发现前面的空格不见了,想办法解决之。
查看了网页的源代码如下 :
肯定显示不出来啊, <option> 标签里要是显示空格,必须使用 。
好! 问题找到,也容易解决,将 " " 替换为 " " 就 OK 了。 三下五除二搞定,运行。
居然显示为 :  ;XXX
why?
查看网页源代码,如下 :
我晕,怎么又给我转义了一遍,把前面的 [&] 给转义成 [&], 难怪呢!
看来 <html:optionsCollection/> 里肯定有个属性控制特殊字符转义用的,找 struts-html.tld 先, 如下 :
///。。。
<attribute>
<name>filter</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
// 。。。
</tag>
查阅了<精通Struts :基于MVC的Java Web设计与开发> 一书,解释如下 :
默认为 true, 如果 fileter 属性为 true,将把输出内容中特殊 HTML 符号作为普通字符来显示;如果 filter 属性为 false,则不会吧输出内容中特殊 HTML 符号转化为普通字符串。
不知道,您看了以后会有怎样的感觉,反正我是感觉相当别扭。
其实就是这个意思 :
fileter 为 true 的时候, Struts 将会把特殊 HTML 符号进行转义。
fileter 为 false 的时候,Struts 将会把特殊 HTML 符号原本输出。
将 <html:optionsCollection/> 的 fileter 设定为 false, 搞定!