我偶然发现了一个我无法用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没有属性loggingInUser。但是,如何在值属性中调用该方法并在该返回类型上调用方法呢?
也许这甚至是不可能的,我在这里错过了一些关键的事情。但是,总是为要使用的任何内容设置一个属性而不是能够以这种方式将其分解真的不是很烦人吗?
已经感谢您的帮助!
最佳答案
用户会话
public String getLoggedUserNickname(){
return getLoggedInUser().getNickname();
}
视图
<h:outputText value="Welcome #{userSession.loggedUserNickname}" />
要不就
<h:outputText value="Welcome #{userSession.loggedInUser.nickname}" />
-
每当调用诸如
myProp
之类的userSession.myProp
之类的属性时,它都会寻找getMyProp()
函数。区分大小写