Добрый день
Мне нужно отобразить дельта-время как разницу между двумя экземплярами java.date.Util в формате 'ЧЧ: мм: сс'
Библиотека Omnifaces выглядит оченьудобно вычислять разницу в секундах между этими двумя экземплярами java.date.Util, которые всегда будут в один и тот же день.
Одно значение задается с помощью компонента календаря Primefaces в верхней части файла .xhtml.как это:
<p:outputLabel for="datetime" value="Marathon Race Start: "/>
<p:calendar id="datetime" value="#{resultsView.marathonStart}" pattern="yyyy/MM/dd HH:mm:ss">
<p:ajax event="change" immediate="true" update="marathon_results_form:results_all_datatable"/>
</p:calendar>
И затем результаты отображаются в таблице данных Primefaces, как показано ниже (корректно работает только столбец времени, показанный как все остальные столбцы):
<p:column headerText="Time - Completed" style="text-align: center; align-content: left">
<c:set var="raceTime" value="#{of:secondsBetween(resultsView.marathonStart,allResults.dateTimeStamp)}"/>
#{of:formatDate(raceTime, 'HH:mm:ss')}
</p:column>
Вышеприведенный фрагментвыдает ошибку времени выполнения:
cannot convert of type class java.lang.Long to class java.util.Date
Если я удаляю Omnifaces:
#{of:formatDate(raceTime, 'HH:mm:ss')}
И заменяю только:
#{raceTime}
Преобразование всего столбца затем в:
<p:column headerText="Time - Completed" style="text-align: center; align-content: left">
<c:set var="raceTime" value="#{of:secondsBetween(resultsView.marathonStart,allResults.dateTimeStamp)}"/>
#{raceTime}
</p:column>
Он действительно работает правильно, показывая количество секунд в столбце таблицы;и как только время начала обновляется с помощью календаря Primefaces, количество секунд в виде продолжительного обновления в реальном времени отображается в таблице;именно так, как и должно быть.
Итак, как я могу в EL (используя JSF 2.3.5.SP1 на WildFly 15) преобразовать эти длинные значения в формат 'HH: mm: ss'?
EDIT:
Я знаю, что это легко сделать, передавая long raceTime методу управляемого компонента и получая строку обратно из компонента;однако, если это можно сделать более кратко с помощью EL или Omnifaces, я бы предпочел следовать этому подходу.