You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EL的#{resource}映射中获取JSF Bean属性?

解决EL表达式嵌套调用资源路径的问题

我来帮你搞定这个EL表达式的问题!你遇到的核心问题是嵌套的EL表达式写法错误——在同一个#{}块里不需要再套一层#{},容器无法解析这种嵌套结构。

正确的写法

把logoHandler.getLogo("A1")的返回值直接作为resource的索引参数即可,不需要额外的表达式包裹:

<img src="#{resource[logoHandler.getLogo('A1')]}"/>

为什么原来的写法不行?

EL表达式的语法规则里,单个#{}就是一个完整的执行上下文,内部可以直接调用方法、访问变量。你之前的写法#{resource["#{logoHandler.getLogo("A1")}"]}相当于在字符串里嵌套了另一个EL表达式,容器会把"#{logoHandler.getLogo("A1")}"当成普通字符串处理,而不是去执行这个方法,自然找不到对应的资源路径。

额外注意事项

  • 确保logoHandler已经在你的视图上下文(比如Spring的Bean容器、JSF的托管Bean等)中正确注册,能够被EL表达式访问到。
  • 确认getLogo("A1")方法返回的字符串格式和你之前硬编码的"img/bla.svg"一致,比如返回"img/A1.svg"这类资源路径,这样resource才能正确定位到图片文件。

内容的提问来源于stack exchange,提问作者curious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:20:03