Вы можете использовать публичный наблюдаемый список для хранения общедоступных данных или просто создать общедоступный метод настройки для хранения данных и получения из соответствующего контроллера
Как вы сказали, атрибут jsfc
существенно полезен, когда вам нужно «преобразовать» прототип HTML в страницу JSF. Например, если у вас есть входной текст HTML:
<input type="text" .../>
, вы можете добавить атрибут jsfc
, чтобы преобразовать этот компонент HTML в компонент JSF:
<input type="text" jsfc="h:inputText" .../>
Это эквивалентно написанию следующего кода JSF :
<h:inputText .../>
Как указано в документации Facelets здесь или здесь , атрибут jsfc
также может использоваться для «сопоставления» компонентов Facelets. Например, вы можете удалить часть HTML-кода:
<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>
Вы также можете создать таблицу, используя этот атрибут:
<table>
<tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}">
<td>#{emp.lastName}</td>
<td>#{emp.firstName}</td>
</tr>
</table>
В этом примере мы не связываем эту таблицу с h: datatable
компонент, но мы создаем таблицу с кодом HTML, используя компонент JSF ui: repeat
для итерации по строкам.
Как видите, атрибут jsfc
можно использовать для преобразования одного компонента HTML в один компонент JSF на странице JSF. Поэтому для сложных компонентов, таких как datatable, вам придется использовать некоторые обходные пути (используя ui: repeat
вместо компонента h: datatable
).
Другой момент заключается в том, что вы не сможете использовать компоненты третьих библиотек, такие как предлагаемые RichFaces, IceFaces, Tomahawk и так далее. И эти библиотеки действительно являются одним из интересов JSF.
Итак, подведем итог: jsfc
может быть полезен для преобразования прототипа HTML в приложения JSF, в основном для создания Proof of Concepts или проектирования общего пользовательского интерфейса. Однако я думаю, что лучше избегать этого компонента, когда начнется «настоящая» разработка ...