【问题标题】:Richfaces special codeRichfaces 特殊代码
【发布时间】:2012-07-12 13:09:35
【问题描述】:

我必须使用rich:combobox 来显示组合。
在某些情况下,我必须添加一个空的comboboxItem = new SelectItem("","")
这在 IE8、Chrome、Safari 上运行良好。
它使用 FF 和 Opera 编写  
查看richfaces代码,我看到类ComboBoxBaseRenderer,方法getItems有一段奇怪的代码:

if("".equals(convertedValue)) {
 convertedValue = "\u00A0";
}  

似乎 FF 和 Opera 将 \u00A0 视为真正的空白字符并将其转换为空白空间。
怎么解决?

【问题讨论】:

    标签: java firefox jsf richfaces opera


    【解决方案1】:

    从 JavaScript 的角度来看,Opera 和 Firefox 就在这里。

    White space 由 ECMAScript 5.1 第 7.2 节定义

    \u0009  Tab <TAB>
    \u000B  Vertical Tab    <VT>
    \u000C  Form Feed   <FF>
    \u0020  Space   <SP>
    \u00A0  No-break space  <NBSP>
    \uFEFF Other category “Zs” Byte Order Mark Any other Unicode “space separator”  <BOM> <USP>
    

    White space defined by HTML 4(已弃用)

    ASCII space (&#x0020;)
    ASCII tab (&#x0009;)
    ASCII form feed (&#x000C;)
    Zero-width space (&#x200B;)
    

    Spaces characters defined by HTML5

    U+0020 SPACE, 
    "tab" (U+0009), 
    "LF" (U+000A), 
    "FF" (U+000C), 
    "CR" (U+000D).
    

    【讨论】:

    • 好的@karlcow,但我该如何解决这个问题?
    • @Giant2 是否需要不可见。 newString = aString.replace(/\s/g,'\u2009'); 这能满足您的需求吗?