Компонент JSF / Facelets с использованием привязок - PullRequest
2 голосов
/ 13 мая 2011

Я создаю простой компонент 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 и работать с выражениями ввода / вывода?

...