Ошибка даты при преобразовании времени с помощью f:convertDateTime

У меня проблема с f:convertDateTime, которая, кажется, использует сообщение об ошибке javax.faces.converter.DateTimeConverter.DATE_detail, когда я конвертирую время (т.е. он должен использовать javax.faces.converter. DateTimeConverter.TIME_detail).

Я предполагаю, что проблема в том, что я использую шаблон, и поэтому он не знает, является ли это датой или временем, которое он связывает для преобразования. Вот что я пытаюсь («timePattern» — «чч.мм»):

<f:convertDateTime type="time" pattern="#{timePattern}" />

Несмотря на то, что указано type="time", оно по-прежнему использует сообщение об ошибке DATE_detail. Является ли это ошибкой или я предполагаю, что сообщение об ошибке TIME_detail должно использоваться неправильно, и мне нужно создать свой собственный конвертер?


person Vetle    schedule 01.09.2010    source источник


Ответы (2)


К сожалению, это также то, что содержит DateTimeConverter javadoc. рассказывает. Вот выдержка из релевантности:

Если был указан pattern, его синтаксис должен соответствовать правилам, указанным java.text.SimpleDateFormat. Такой шаблон будет использоваться для синтаксического анализа, и свойства type, dateStyle и timeStyle будут игнорироваться.

Однако я должен признать, что парням из JSF пришлось указать это явно в f:convertDateTime pdldoc. Отсюда не видно. Я бы сообщил о проблеме ребятам из JSF, чтобы они прояснили эту часть.

Чтобы заставить его работать, лучше всего либо не полагаться на шаблон, а вместо этого полагаться на type, dateStyle и timeStyle (и языковой стандарт), или создать собственный преобразователь даты и времени, который extends DateTimeConverter и переопределяет методы соответственно.

person BalusC    schedule 02.09.2010
comment
Спасибо, хороший ответ! В итоге я создал конвертер, но надеялся избежать этого. - person Vetle; 03.09.2010

Вы также должны определить javax.faces.converter.DateTimeConverter.TIME в своих сообщениях.

Посмотрите здесь: http://www.icefaces.org/JForum/posts/list/16119.page Одна запись перед последней.

person amorfis    schedule 01.09.2010
comment
Он определен, и f:convertDateTime использует его, если используется с type=time и шаблоном no. Проблема здесь в том, что используется сообщение об ошибке DATE, когда тип=время и шаблон=все, что используется. - person Vetle; 02.09.2010