【问题标题】:Sending dynamic data to backing bean in JSF using nested JSF expressions使用嵌套的 JSF 表达式将动态数据发送到 JSF 中的支持 bean
【发布时间】:2011-11-13 00:08:17
【问题描述】:

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

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

【问题讨论】:

    标签: jsf


    【解决方案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)}" />
    

    【讨论】:

    • 谢谢,在表达式中使用 user.current.id 可以完美运行。
    猜你喜欢
    • 2010-10-18
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2013-06-29
    • 2012-11-15
    • 2014-01-25
    相关资源
    最近更新 更多