JSF:对方法的返回对象调用方法

时间:2012-06-21 18:07:27

标签: java jsf-2 el method-call

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

我有一个会话作用域对象,由 userSession 引用。

因此,如果我想获取属性 loginTimestamp ,我只需要调用 userSession.loginTimestamp ,这没问题,并且工作正常。

现在我还有一个方法 getLoggedInUser ,它为我提供了一个类型为user的Object。 在那个对象上,我可以调用一个方法 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。但是,我如何在value-attribute中调用该方法并在该返回类型上调用方法?

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

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

UserSession

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

查看

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

或者只是

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

-

每当您呼叫myProp之类的userSession.myProp属性时,它会查找getMyProp()函数。区分大小写的