如果用户被记录,如何显示和隐藏?

时间:2011-11-02 18:42:01

标签: jsf jsf-2

我创建了一个合成模板:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:cs="http://java.sun.com/jsf/composite/composite">

    <h:panelGroup rendered="#{not empty userc.userb.user.id}">
        <h:panelGrid columns="3">
            <h:outputText value="Welcome, " />
            <h:outputLink value="profile.xhtml">
                <h:outputText value="#{userc.personb.person.name}" />
            </h:outputLink>

            <h:form>
                <h:commandLink action="#{userc.logout}">Log out</h:commandLink>
            </h:form>
        </h:panelGrid>
    </h:panelGroup>

    <h:panelGroup rendered="#{empty userc.userb.user.id}">
        <h:outputLink value="pages/login.xhtml">Login</h:outputLink>
    </h:panelGroup>
</ui:composition>   

如果用户未登录,我的目的是隐藏第一个panelGroup,如果他没有,那么我隐藏第二个panelGroup然后显示第一个。

我正在尝试这样做但不起作用。 有什么想法吗?

没有登录:

without login

登录后:

with login http://img89.imageshack.us/img89/9866/0602nov.jpg

1 个答案:

答案 0 :(得分:1)

entity.User课程中,替换

private int id;

通过

private Integer id;

这样,它将默认为null而不是0,因此#{empty userc.userb.user.id}将为true。无论如何,通常的做法是在实体的属性中使用包装器而不是基元。