Руководство по системе меню - PullRequest
1 голос
/ 03 мая 2011

Уважаемые код-бендеры. Я пытаюсь сделать систему меню в ядре JSF 2.0 для простого веб-приложения. У меня есть другой пользователь с разными ролями (администратор, пользователь, гость и т. Д.), Которого я загружаю с помощью JPA из базы данных. Поэтому я попытаюсь создать динамическую систему meny и вставить ее в левую выровненную панель. Я искал в Интернете что-то подобное, но большую часть времени я нахожу примеры в RichFaces, PrimeFaces и других, а не в ядре jsf.

Может ли кто-нибудь быть любезным, указав мне направление, в котором я могу получить базовые идеи (учебное пособие / пример) по созданию системы меню в ядре JSF 2.0?

Привет Крис

PS. Подумайте об использовании RichFaces, но я хочу посмотреть, легко ли это с ядром jsf.

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

Меню - это просто набор ссылок, которые обычно идут в HTML <ul><li>.Вы можете использовать CSS, чтобы придать ему приятный вид, но это не является обязанностью JSF.

Если это плоский список, просто выполните

<ul>
    <ui:repeat value="#{menu.list}" var="item">
        <ui:fragment rendered="#{item.accepts(user.roles)}">
            <li><a href="#{item.url}">#{item.name}</a></li>
        </ui:fragment>
    </ui:repeat>
</ul>

Если этодерево, тогда вам действительно нужно отправиться в стороннюю библиотеку компонентов, поскольку стандартная библиотека компонентов JSF не содержит компонента, который поддерживает итерацию / отображение древовидной структуры.Многие сторонние библиотеки компонентов имеют вид компонента <xx:tree>.

Вы также можете создать собственный компонент итератора дерева, который не отображает никакой разметки.Вот пример того, как сторона вида может выглядеть:

<xx:tree value="#{menu.tree}" var="item">
    <xx:treeNode level="0">
        <xx:treeNodeItem rendered="#{item.accepts(user.roles)}">
            <h3>#{item.name}</h3>
            <xx:insertTreeNodeChildren />
        </xx:treeNodeItem>
    </xx:treeNode>
    <xx:treeNode>
        <ul>
            <xx:treeNodeItem rendered="#{item.accepts(user.roles)}">
                <li>
                    <a href="#{item.url}">#{item.name}</a>
                    <xx:insertTreeNodeChildren />
                </li>
            </xx:treeNodeItem>
        </ul>
    </xx:treeNode>
</xx:tree>
1 голос
/ 18 июля 2012

Если вы не получаете достаточного удовлетворения от компонентов JSF2, возможно, вам следует внедрить сторонний компонент, это не значит, что вам нужно соединить свое решение с этими компонентами, возможно, вы можете попробовать дополнительный слой для подключения любого компонента в вашем интерфейсе JSF. С другой стороны, последние версии основных и ледовых интерфейсов имеют встроенную реализацию с JSF2, и вам не нужно беспокоиться о разработке дополнительных вещей для подключения их компонентов. У вас может быть дерево меню с простыми названиями, а остальные страницы в чистом JSF2. Только вам нужны управляемые компоненты и другие классические компоненты JSF2 API. Между прочим, это может быть реализовано также с помощью Facelet, который поставляется с JSF2.

Надеюсь, этот комментарий поможет вам.

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...