JSF 2 слушатель события поведения ajax не запускается в Date - PullRequest
0 голосов
/ 06 января 2012

У меня проблема с тем, что событие поведения ajax не запускается сразу, поскольку текст набирается в поле.

Если поле является строкой, нет проблем, но я использую дату.

xhtml:

<h:outputLabel value="Date of Birth:" />
<h:inputText id="searchDOB" value="#{search.dob}" required="true">
  <f:ajax event="keyup" listener="#{search.addHyphensToDOB}" render=":output" />
  <f:convertDateTime pattern="dd-MMM-yyyy" />

bean:

Date dob;

public void addHyphensToDOB(AjaxBehaviorEvent abe) {
  System.out.println("addHyphen");
}

Событие вызывается только после ввода следующего:

22-JAN-

И срабатывает любое число после второго дефиса, но нераньше.

Одним из решений может быть изменение типа даты на строку, а затем форматирование без использования конвертера, но я хотел бы сохранить тип даты.

Любые предложения, спасибо.

Eclipse 3.7, Tomcat 7, JSF2.1,

1 Ответ

1 голос
/ 08 января 2012

Это не сработало, потому что произошла ошибка преобразования из-за неверного формата даты.Переданное значение конвертируется каждый раз перед тем, как будет вызван метод слушателя bean.Добавьте <h:message> / <h:messages> и включите его идентификатор в <f:ajax render>.Затем вы увидите это.

Значение String, например, 2, может невозможно представить действительный объект Date при анализе с шаблоном dd-MMM-yyyy.

You 'Вам действительно нужно оставить значение String, если вы хотите достичь функциональных требований таким образом.В качестве совершенно другой альтернативы вы можете рассмотреть возможность сделать это полностью на стороне JavaScript, не отправляя запросы JSF ajax.

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