使用嵌套的JSF表达式将动态数据发送到JSF中的支持bean

时间:2011-11-13 00:08:17

标签: jsf

我最近开始使用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)}"/>

实现这一目标的最简单方法是什么?

1 个答案:

答案 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)}" />