JSF-Component没有插入任何html

nim*_*o23 2 jsf facelets

我有这样的事情:

<ul>        
<li>User</li>
<li>Admin</li>
..
</ul>
Run Code Online (Sandbox Code Playgroud)

并且只有当实际用户处于角色"管理员"时才想呈现列表项"管理员".

我知道,我可以这样做:

<ul>        
<li>User</li>
<h:panelGroup rendered="#{request.isUserInRole('admin')}">
<li>Admin</li>
</h:panelGroup>
..
</ul>
Run Code Online (Sandbox Code Playgroud)

但是,由于h:panelGroup,标记会插入"span"元素.

是否有一个带有'rendered'属性的JSF-Component,它不会插入任何html?

不幸的是,Facelets ui:remove/ui:include没有'呈现'属性:

<ul>        
<li>User</li>
<ui:remove rendered="#{request.isUserInRole('admin')}">
<li>Admin</li>
</ui:remove>
..
</ul>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这种情况?

Dar*_*iop 5

您的意思可以通过使用ui:fragment来实现.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:fragment rendered="#{action.isUserLoggedIn()}">
        <!-- this will only be shown to logged in users -->
    </ui:fragment>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)