JSF - компонент UIInput без ввода устанавливает свойство String в пустую строку - PullRequest
0 голосов
/ 03 декабря 2010

Я застрял в этом вопросе на некоторое время. Я нашел более раннюю статью, в которой BalusC давал советы по созданию собственного конвертера с именем «EmptyToNullConverter» для JSF версии 1.2. или указание параметра контекста в JSF 2.0

<context-param>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>

Ни один из этих вариантов не работал для меня. Сработало ли это для других людей.

Проведя собственное расследование, я перешёл к источнику UIInput. Я вижу, что значение равно нулю, пока оно не передается в ValueExpression. К сожалению, у меня нет источника для этого, поэтому я не мог углубляться дальше. Я предполагаю, что именно здесь он в конечном итоге создает новый тип String и передает его свойству модели?

Моя среда выглядит следующим образом

  • запуск Mojarra RI с использованием jsf-api-2.0.3 и jsf-impl-2.0.3 jars
  • также с использованием richfaces 3.3.3, поэтому мне пришлось отключить обработчик вида для jsf2. В результате все еще использую банку с гранями
  • Все это работает на Tomcat 6

Любая помощь будет оценена

1 Ответ

0 голосов
/ 04 декабря 2010

Я знаю, что у нас возникла эта проблема при использовании Richfaces и стандартной реализации JSF Sun по умолчанию 1.2. Одним из способов решения этой проблемы является использование собственных пользовательских преобразователей для любого необходимого вам типа, которые преобразуют пустые значения (0, "") в нули.

Другим способом является преобразование внутри вашего бэк-бина:

MyBackingBean {

String myValue;

public void setMyValue(String v) {
  if (v==null || v.trim().length==0) {
    myValue==null;
  } else {
    myValue=v;
  }
}

public String getMyValue() {
  return myValue;
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...