0

我在 itemValue 中有 2 个空格"03 R MAIN1"。在进行 ajax 提交时,面板正在重新渲染,当时我可以看到 2 个空格已被替换为 1 个空格,因为此值与选中的值匹配,并且该值在下拉列表中。所以我什至得到“验证错误:值无效”。请看下面的代码:

<a4j:form>
    <a4j:outputPanel ajaxRendered="true" id="TEST">
        <h:messages  layout="table" errorClass="errormsg noticeMsg" fatalClass="errormsg noticeMsg" 
             infoClass="infomsg noticeMsg" styleClass="table-center dont-capitalize" id="err_succ_message" />
        <h:outputText value="Display DropDown Values" />
        <h:selectOneMenu value="#{nonLocationSpecificBackingBean.testing}">
            <f:selectItem itemValue="03 R  MAIN1"/>
        </h:selectOneMenu>
        <a4j:commandButton value="Save" action="#{nonLocationSpecificBackingBean.test}" reRender="err_succ_message,TEST"></a4j:commandButton>
        <a4j:commandButton value="Test"  reRender="TEST"></a4j:commandButton>
    </a4j:outputPanel>
</a4j:form>

请帮助解决这个问题。谢谢

4

1 回答 1

0

它与 HTML 中如何处理多个空格有关。但是,在您的情况下,我认为 CSS 技巧不是答案(如链接问题中所建议的那样)。

我认为一个好的解决方案是在表单中使用 HTML 编码值,并在您的服务器组件中对其进行解码。

更新:转换器中的可能实现将如下所示(由于格式问题,在此处添加代码而不是注释:))

public Object getAsObject(FacesContext arg0, UIComponent arg1, String newValue) {
    return (Object) newValue.replaceAll("&nbsp;", " ");
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object value) { 
    return value.toString().replaceAll(" ", "&nbsp;"); 
}
于 2013-04-19T10:25:48.630 回答