Возможно ли привязать компонент HTML5 (<input type = "date" >) к управляемому объекту Bean?

Я хотел бы использовать новый HTML5 <input type="date"> и привязать его значение к управляемому bean:

<input type="date" value="#{bean.date}"/>

Я хочу сделать это, потому что мне это нравится больше, чем тот, который предлагается PrimeFaces.

Как я могу это достичь?

Ответ 1

Это возможно только после JSF 2.2. Эта функция называется "элементы пересылки" .

<html xmlns:jsf="http://xmlns.jcp.org/jsf">
...
<input type="date" jsf:value="#{bean.date}" />

В качестве альтернативы используйте атрибуты сквозной передачи.

<html xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText a:type="date" value="#{bean.date}" />

Если вы еще не на JSF 2.2, вы можете уйти с OmniFaces 'Html5RenderKit. Это позволяет вам использовать новые атрибуты HTML5 среди других <h:inputText>.

<h:inputText type="date" value="#{bean.date}" />

См. также

Ответ 2

Другой способ (работает только с JSF 2.2) - использовать f:passThroughAttribute внутри вашего inputText:

<h:inputText id="yourNumberField" value="#{mainController.myBeautifulNumber}">
    <f:passThroughAttribute name="type" value="number"/>
    <f:passThroughAttribute name="step" value="0.02"/>
</h:inputText>

Пространство имен f: является значением по умолчанию xmlns:f="http://xmlns.jcp.org/jsf/core".