2

我偶然发现了一个我似乎无法用我对 jsf 的基本知识自己解决的问题。

我有一个由userSession引用的会话范围对象。

因此,如果我想获得属性loginTimestamp,我只需调用userSession.loginTimestamp,这没问题并且工作得很好。

现在我还有一个getLoggedInUser方法,它给了我一个用户类型的对象。在那个对象上,我可以调用一个方法getNickname,它应该给我一个字符串。

问题是我想调用类似的东西

<div id="login">
    <h:outputText value="Welcome #{userSession.getLoggedInUser.getNickname}" />
    <h:form id="logoutForm">
        <h:commandButton class="Submit" value="logout"
            action="#{Logout.logout}" />
    </h:form>
</div>

不,getLoggedInUser 方法没有属性 loggedInUser。但是我如何在值属性中调用该方法并在该返回类型上调用方法呢?

也许这甚至是不可能的,我在这里错过了一些至关重要的东西。但是,总是为您想要使用的任何东西设置一个属性而不是能够以这种方式分解它,这不是很烦人吗?

已经感谢您的帮助!

4

2 回答 2

1

丢失get前缀。这应该有效:

<h:outputText value="Welcome #{userSession.loggedInUser.nickname}" />
于 2012-06-21T18:14:17.930 回答
1

用户会话

public String getLoggedUserNickname(){
   return getLoggedInUser().getNickname();
}

看法

<h:outputText value="Welcome #{userSession.loggedUserNickname}" />

要不就

<h:outputText value="Welcome #{userSession.loggedInUser.nickname}" />

--

myProp例如,每当您调用属性时,userSession.myProp它都会寻找getMyProp()功能。区分大小写

于 2012-06-21T18:15:00.020 回答