我最近开始使用JSF(我也是HTML的新手),我遇到了JSF表达式的问题。我需要向我的一个支持bean发送一个动态值,该值是当前登录用户的ID。我尝试使用嵌套的JSF表达式,但是我得到了以下异常:
action =“#{newLogBean.saveOrUpdateLog(#{user.current.id})}”失败 解析表达式 [#{newLogBean.saveOrUpdateLog(#{user.current.id})}]
在我的网页上,该行如下所示:
<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(#{user.current.id})}"/>
据我所知,我不能使用那样的嵌套表达式,所以我的问题是如何以另一种方式解决这个问题。是否可以在JSF中声明一个变量来获取用户ID,然后将该变量用于支持bean,如下所示:
(in JSF) int id = user.current.getId(); // get id of current logged in user
<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(id)}"/>
实现这一目标的最简单方法是什么?
答案 0 :(得分:1)
在统一表达式语言的2.2版中,您可以调用参数化方法。 较新的应用程序服务器,如Glassfish 3或Tomcat 7,包含该版本。
此版本的主要变化是添加了方法调用 EL中的参数,例如#{trader.buy(“JAVA”)}。
请参阅第125页的specification。
换句话说,你可以这样做:
<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(user.current.id)}" />