java - EL中bean的动态选择

标签 java jsf el

有没有办法在运行时而不是设计时指定在 EL 中使用的托管 bean?例如。 actionListener="#{myBean.method}" 这样 myBean 部分可以有不同的值,具体取决于调用代码的 JSF 页面(条件是使用任何对象代替myBean 派生自实现“方法”的共同父级)。

最佳答案

如果您事先知道 bean 范围并且 bean 已经事先创建,那么是的,可以使用以下语法:

actionListener="#{requestScope[beanName].method}"

其中 #{requestScope} 表示请求范围映射(相同的映射可用于 View 、 session 和应用程序范围),#{beanName} 表示保存请求的变量托管 bean 名称。

如果您事先不知道 bean 作用域和/或没有事先创建 bean,那么您需要创建一个实用 EL 函数来执行 Application#evaluateExpressionGet() , 这样它就可以像下面这样使用:

actionListener="#{util:getBean(beanName).method}"

关于java - EL中bean的动态选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12159777/

相关文章:

jquery - Primefaces 6.0 对话框架和框架集

java - 将 Flash 文件上传与 JSF 集成

jsf - Spring/JSF 项目中的 OmniFaces 不检索枚举属性

jsf - 仅当至少呈现两个子项(标题+项目)时,如何呈现 JSF 组件?

c# - Java 套接字从 C# 读取字节

java - Spring boot 的 Arango Edge 创建错误

在通过 Ajax 更新 JSF 组件后,JavaScript/jQuery 事件监听器不起作用

jsf - JSF返回带有纯/原始XHTML/XML/EL源的空白/未分析页面,而不是呈现的HTML输出

java - JAXB 解码具有相同名称的元素

java - Kubernetes Java 客户端 API 异常