JSF спецификации 2.2 (2013-03-20) говорит, что в пункте 10.3.3.1 (Декларирование составной библиотеки компонентов для использования на странице Facelet):Составной компонент структуры папок
Если facelet библиотеку тегов объявлен в страница с XHTML с пространством имен, начиная со строкой «http://java.sun.com/jsf/composite/» (без кавычек), остальная часть декларации пространства имен берутся как название библиотеки ресурсов [...]
Если подстрока следующая « http://java.sun.com/jsf/composite/ "содержит символ"/"или любые символы, не являющиеся законными для имени библиотеки fo должны быть приняты меры. Если application.getProjectStage() - Разработка, информационное сообщение об ошибке должно быть размещено на странице и также занесено в журнал. В противном случае сообщение должно быть зарегистрировано только.
Так это означает, что это незаконно, чтобы иметь следующую структуру папок:
resources
components
system
something_specific
something_even_more_specific
и относятся к библиотеке имени «http://java.sun.com/jsf/composite/components/something_specific»? Это верно?
Это похоже на странное ограничение. Я хочу, чтобы мои источники были структурированы, а не собраны вместе в огромном куске.
Такая иерархическая библиотека фактически работает в Wildfly 8.0.0.CR1, но я не уверен, насколько разумно полагаться на это поведение.
Ответы на «лучшие практики» приветствуются.
Нашел следующее в файле 'javax.faces.application.ResourceHandler.createResource (String)' javadoc: 'По историческим причинам этот метод работает корректно, когда аргумент resourceName имеет вид libraryName/resourceName, даже если resourceName содержит '/' characters.' –
https://stackoverflow.com/q/39537911/1341535 –