2013-04-19 1 views
0

У меня есть 2 пробела в itemValue "03 R MAIN1". Во время выполнения ajax submit панель получает reRendered, в то время я мог видеть, что 2 пробела были заменены одним пробелом, потому что эти значения соответствуют, которые выбраны, и они находятся в раскрывающемся списке. поэтому я даже получаю «Ошибка проверки: значение недействительно». См. Код ниже:несколько мест удалены при повторной передаче панели для любого компонента в java

<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> 

Пожалуйста, помогите нам в этом. Thanks

+0

Это может быть связано с тем, как несколько пробелов в HTML визуализируются - см. http://stackoverflow.com/questions/4503001/multiple-spaces-between-words-in-html-without-nbsp –

ответ

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;"); 
} 
+0

Спасибо Akshay. Я попытался с расшифровкой и кодировкой с помощью конвертера. Пожалуйста, смотрите код ниже: –

+0

я не вижу код :) – Akshay

+0

конвертер код \t FacesConverter ("SpaceConverter") общественного класса SpaceConverter реализует конвертер { Override общественный объект getAsObject (FacesContext arg0, UIComponent arg1, String новое_значение) { \t возврата (Object) newValue.replace (" " "_");}. Override общественности Строка getAsString (FacesContext arg0, UIComponent arg1, значение Object) { возврат value.toString() заменить ("" , "_"); \t}} код XHTML: \t \t \t \t