Я создаю простой компонент JSF / Facelets, полезный для указания временных интервалов:
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jstl/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j" xmlns:t="http://myfaces.apache.org/tomahawk" xmlns="http://www.w3.org/1999/xhtml" xmlns:jstl="http://java.sun.com/jsp/jstl/functions" version="2.0"> <ui:component> <h:panelGrid columns="2" cellpadding="2"> <rich:inputNumberSpinner value="#{durationBean.duration}"/> <h:selectOneMenu value="#{durationBean.unit}"> <f:selectItem itemValue="sec" itemLabel="Second/s"/> <f:selectItem itemValue="min" itemLabel="Minute/s"/> <f:selectItem itemValue="hou" itemLabel="Hour/s"/> <f:selectItem itemValue="day" itemLabel="Day/s"/> </h:selectOneMenu> </h:panelGrid> </ui:component> </jsp:root>
Я хочу использовать этот тег как:
<time:interval value="#{myBean.intervalInMilliseconds}"/>
Итак, сам компонентпреобразует единицы измерения и возвращает значение в мс.Проблема в том, что, используя Facelets для этого, выражение value="#{myBean.intervalInMilliseconds}" вычисляется в разделе <ui:component>, поэтому я не могу передать выражение значения как есть.Как можно создавать пользовательские компоненты без необходимости писать теги / атрибуты (простые компоненты JSF), но использовать Facelets и работать с выражениями ввода / вывода?
value="#{myBean.intervalInMilliseconds}"
<ui:component>