让 JSF 从 EL 访问 Map 值而不是 bean 字段?

2024-03-30

是否有任何正确的方法来覆盖 JSF 从表达式语言访问 beans 字段的方式?这个想法是模仿这种行为以便访问Map<String, ?>值,其中 bean 字段将是映射键。

换句话说,是否可以使用#{beanContainingNestedMap.keyOfSaidNestedMap},就好像keyOfSaidNestedMap是一个领域beanContainingNestedMap?

如果没有,我还有什么其他解决方案?


Example:

持有者.java

public class Holder {

    private Map<String, Object> objects = new HashMap<String, Object>();

    public void add(String key, Object value) {
        objects.put(key, value);
    }

    public Object getObject(String key) {
        return objects.get(key);
    }

}

示例Bean.java

public class ExampleBean {

    private Holder holder = new Holder();

    public ExampleBean() {
        holder.add("foo", 42);
        holder.add("bar", 'X');
    }

    public Holder getHolder() {
        return holder;
    }

}

示例.xhtml

<c:out value="#{exampleBean.holder.foo}" /> <!-- should print "42" -->
<c:out value="#{exampleBean.holder.bar}" /> <!-- should print "X" -->

如果我可以做类似的事情那就太好了(一种伪代码,因为我不知道这样的方法是否存在;)):

@Override // override JSF's (if any...)
public Object resolveEl(String el) {
    try {
        super.resolveEl(el);
    } catch (ElException e) {
        Object bean = e.getBean();
        String fieldName = e.getFieldName();
        if (bean instanceof Holder) {
            Holder holder = (Holder) bean;
            Object value = holder.getObject(fieldName);
            if (value == null) {
                throw e;
            } else {
                return value;
            }
        }
    }
}

您可以直接通过EL使用地图。

持有者.java

public class Holder {

    private Map<String, Object> objects = new HashMap<String, Object>();

    public void add(String key, Object value) {
        objects.put(key, value);
    }

    public Map<String, Object> getObjectsMap() {
        return objects;
    }

}

EL

#{exampleBean.holder.objectsMap[your-key]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 JSF 从 EL 访问 Map 值而不是 bean 字段? 的相关文章

  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • 应用程序中的 Firestore 查询给出权限被拒绝,而模拟器工作正常

    在我的基于 Firestore 的应用程序中 我使用以下查询来检索一些数据 FirebaseFirestore getInstance collection events document eventId collection instan
  • 如何只获取用户路径变量?

    Echo PATH 回报system路径变量 user路径变量 如何只得到user路径变量 The system PATH变量的值存储在 Windows 注册表中Path类型的REG EXPAND SZ包含对环境变量的引用 例如 Syste
  • 如何在 JSON 文件中进行搜索?

    如何创建一个搜索表单来搜索 JSON 文件中输入的术语 因此 如果搜索词等于位置对象内的标题 它应该返回该对象信息 如果没有匹配 则向用户反馈没有找到项目 我创建了一个搜索输入
  • 当您不需要将某些内容定义为动态来 with-redefs 时,将某些内容定义为动态的意义何在?

    在我看来 这with redefs可以做一切binding动态符号可以做到 只是它没有需要的限制 dynamic元数据 那么我什么时候应该使用其中一种而不是另一种呢 除了要求 dynamic元数据 binding还创建仅在当前线程中可见的绑
  • 如何从 Azure 函数返回 xlsx 文件?

    我见过一些人尝试过 我无法重现他们的结果 乐于使用任何语言 我可以从 HTTP 触发器创建 xlsx 我想从另一个 HTTP 触发器返回该文件 如果您已经生成了该文件 则返回它只是创建一个带有附件的 HTTP 响应 var result n
  • 使用 Python 字典作为键(非嵌套)

    Python 不允许将字典用作其他字典中的键 是否有使用非嵌套字典作为键的解决方法 更复杂的不可散列对象和我的具体用例的一般问题是搬到这里 https stackoverflow com questions 1611797 using no
  • C++ 模板参数更改对指针的引用

    也许我不知道如何搜索 但事实上我找不到任何人谈论这个 我的结构有一个non type论证取决于type争论 template lt typename SpecType SpecType NonType gt struct Struct Wh
  • yii 自定义错误页面,例如 404、403、500

    我正在尝试为所有错误消息创建单独的文件 404 403 500 等 这样我就可以为它们进行定制设计 如果可能的话 我不希望页眉和页脚也包含在我的错误页面中 现在我有这个 在我的站点控制器 php并把错误404 php进入我的浏览量 站点 f
  • 如何分析 Java 中的线程?

    我的应用程序中有生产者和消费者线程 我需要对它们进行分析以查看线程的性能 每个线程进入睡眠和等待之前所花费的时间等 并采取纠正措施以提高应用程序的整体效率 关于如何解决这个问题有什么建议吗 我个人使用 YourKit java profil
  • 在 Django 中接受电子邮件地址作为用户名

    有没有一种好方法可以在 Django 中执行此操作 而无需滚动我自己的身份验证系统 我希望用户名是用户的电子邮件地址 而不是他们创建用户名 请指教 对于其他想要这样做的人 我建议看一下django 电子邮件作为用户名 https githu
  • 使用 docker 和 --privileged 构建

    我在用着本指南 https aws amazon com blogs ai build a voice kit with amazon lex and a raspberry pi 使用 Amazon Lex 和 Raspberry Pi
  • 如何在VB6中模拟.net Int64?

    如何在 VB6 中存储 Int64 数字以与 Win32 函数一起使用 有没有办法在 net中定义像Int64这样的类型 并简单评估一下数字 我认为许多 VB6 程序员都需要这样的东西 因为一些 Win32 API 使用 int64 作为参
  • 如何淡出图像的侧面?

    当您扩大浏览器时 您会注意到图像的右侧和左侧以黑色淡出 我需要将相同的功能应用到我的画廊 但不知道 我找到了这个 gt gt link https stackoverflow com questions 9437400 css fade o
  • 不带 href="#" 的脚本链接

    我的网络应用程序使用了很多 a href Perform client script action a 用于脚本编写的锚链接 这是我十多年前作为 Dreamweaver 用户时养成的习惯 现在我开始质疑这是否有必要 我其实不知道为什么 a
  • 我应该在 SSL 证书请求的通用名称中包含“www”吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我即将为一个小型网站购买 SSL 证书 输入 www domain Name com 或 domainName com 作为常用名是最佳做法吗 确保您
  • `ggplot2` axis.text margin 修改了刻度位置

    我不确定我是否遇到了错误或者操作不正确 指定时axis textggplot 中的边距 并移动轴的位置 设置不会保留 在不移动轴文本的情况下 轴周围有足够的空间 library ggplot ggplot mtcars aes mpg wt
  • Google 主页网址 https://www.google.co.in/?gws_rd=cr&ei=xgH... 中的“ei”是什么意思?

    我知道谷歌网址中的一些参数 例如 gws 谷歌网络服务器 rd 重定向 cr 所指国家 但我注意到一个我无法识别的 ei 什么是ei这个网址是什么意思 http www google co in url ei qWwlUqD4MIrRrQf
  • 异步方法的并发执行

    使用 async await 模型 我有一个方法可以对 Web 服务进行 3 次不同的调用 然后返回结果的并集 var result1 await myService GetData source1 var result2 await my
  • 通过 RFC 5987 处理带空格的 filename* 参数会导致文件名中出现“+”

    我正在处理一些遗留代码 所以不 我不能只使用带有编码文件名组件的 URL 允许用户从我们的网站下载文件 由于我们的文件名通常采用多种不同的语言 因此它们都存储为 UTF 8 我编写了一些代码来处理 RFC5987 转换为正确的 filena
  • 让 JSF 从 EL 访问 Map 值而不是 bean 字段?

    是否有任何正确的方法来覆盖 JSF 从表达式语言访问 beans 字段的方式 这个想法是模仿这种行为以便访问Map