如何以编程方式评估托管 bean 中的 EL

2024-04-14

我想在基于 Seam / JSF 的应用程序中添加一个简单的模板语言,让用户撰写自己的电子邮件。

由于我不想创建新的解析器,因此我想使用统一表达语言自行设置上下文。

我怎样才能做到这一点?


如果您位于 JSF 上下文中,那么只需使用Application#evaluateExpressionGet() http://docs.oracle.com/javaee/7/api/javax/faces/application/Application.html#evaluateExpressionGet-javax.faces.context.FacesContext-java.lang.String-java.lang.Class-以编程方式计算包含 EL 表达式的字符串。

String unevaluatedString = convertMailTemplateToStringSomehow();
FacesContext context = FacesContext.getCurrentInstance();
String evaluatedString = context.getApplication().evaluateExpressionGet(context, unevaluatedString, String.class);
// ...

如果您不在 JSF 上下文中,那么您需要使用独立的 EL API,例如JUEL http://juel.sourceforge.net/guide/start.html。或者,如果您已经使用 EL 3.0 并且该字符串表示唯一的 EL 表达式,则使用ELProcessor http://docs.oracle.com/javaee/7/api/javax/el/ELProcessor.html API.

ELProcessor el = new ELProcessor();
el.defineBean("bean", new Bean());
el.eval("bean.foo"); // Without starting #{ and ending } !
// ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式评估托管 bean 中的 EL 的相关文章

随机推荐

  • 模拟 ZPL 打印机

    为了在我的 Mac 上模拟 ZPL 打印机 我在互联网上搜索了几天 最后 我在这里发布了一个解决方案 以便其他用户可以发现它有帮助 我想在这里发布我的解决方案模拟 Zebra 打印机 https stackoverflow com ques
  • 根据 JQGRID 中的条件编辑行

    在 JQGRID 中使用表单编辑 我用不同的颜色显示行 红色 无法编辑行 黑色 可以编辑行 1 Option 当用户单击编辑按钮并且所选行为红色时 应显示消息记录 无法编辑 2 选项 如果用户选择了黑色标记的可编辑行 用户可以编辑该行 但是
  • 当我在程序启动后复制 DLL 时,在运行时加载程序集失败

    在运行时我加载一个程序集 Assembly assembly Assembly LoadFrom c MyFolder MyAssembly dll 如果程序集位于该文件夹中 则此方法有效 如果程序集不在文件夹中 我会得到一个异常 当然告诉
  • 在 Java 中如何检查字节数组是否包含 Unicode 字符串?

    给定一个 UTF 8 编码字符串或任意二进制数据的字节数组 可以使用哪些方法in Java来确定它是哪一个 该数组可以由类似于以下的代码生成 byte utf8 Hello World getBytes UTF 8 或者 它可能是由类似于以
  • Ansible:全局模板文件夹?

    谷歌搜索找不到任何东西 有group vars 全部 对于变量 有类似的模板吗 我想在多个角色中使用一些模板 您可以将全局模板放入templatesAnsible 布局顶层目录 与group vars 顺便说一句 全局文件也是如此 file
  • 数组指针的常量正确性?

    有人争论说 在现代 C 语言中 我们应该始终通过数组指针将数组传递给函数 因为数组指针具有强类型 例子 void func size t n int arr n int array 3 func 3 array 这听起来可能是防止各种类型相
  • dask 可以用于在核心之外进行分组和重新编码吗?

    我有 8GB csv 文件和 8GB RAM 每个文件每行有两个字符串 格式如下 a c c a f g a c c a b f c a 对于较小的文件 我删除重复项 计算前两列中每行的副本数 然后将字符串重新编码为整数如下 https s
  • 使用 VBA 选择“查找”的第二个结果

    我正在努力做到这一点 以便我可以找到 lights 的第二个结果 以防该术语出现各种情况 下面的代码查找所考虑范围内的第一个匹配项 Dim ws As Worksheet Dim rng1 As Range Dim y As Range C
  • 如何使用javascript根据用户需求触发媒体查询

    我有一个响应式网页 针对不同的屏幕尺寸具有不同的设计 我正在使用 mediaquery 来更改我的设计 我想让用户能够更改更小或更大屏幕尺寸的设计 即使屏幕尺寸没有改变 是否可以在不改变屏幕尺寸的情况下用js触发 mediaquery 看一
  • Maven archetype + Velocity:如何显示日期

    我有一个 Maven 原型项目 当我使用这个原型时 我希望一些文件报告实际日期 我尝试使用 date 但 Velocity 无法识别它 我发现了一个叫做 DateTools 的东西 但我不知道如何使用它 这是我第一次使用 Velocity
  • pip 在 Docker 中被杀死

    我正在构建一个基于 Docker 容器python 3 7 slim stretch 同样的问题也发生在python 3 7 slim stretch 并且它正在变得Killed on pip install no cache dir ve
  • PhoneGap css 媒体查询方面不起作用

    我开发了一个以 iPhone 作为设计目标 即 640x960 gt 2 3 的应用程序 并且我使用布局中每个分区的百分比来实现此目的 以便 ui 相对于设备尺寸进行扩展 现在 这在 iPad 上运行良好 但我在使用 9 16 宽高比设备时
  • ImportError: libf77blas.so.3: 无法打开共享对象文件: 没有这样的文件或目录 Raspberry Pi3

    我有一个 Raspberry Pi3 我的目标是作为专用服务器运行几个 python3 脚本 到目前为止 我已经使用 pip3 安装了以下软件包 numpy 熊猫 scipy python Levenshtein fuzzywuzzy 还有
  • 将 Angular 从 12 升级到 13 添加了不能在模块外部使用 import.meta

    我将 Angular 项目从 12 升级到 13 但出现错误 未捕获的语法错误 无法在模块外部使用 import meta 我想在我的项目中同时使用 require 和 import 我尝试使用 type module 但在 webpack
  • 为什么从数组转换为图像时会出现位移?

    我正在尝试从 numpy 数组创建 QPixmap numpy 数组图像将是二维的 即没有颜色信息 只有灰度 我正在尝试适应这一点answer https stackoverflow com a 9796921 1764089满足我的需要
  • Android 图像裁剪 Uri 异常

    首先 我使用的是 Xamarin 但问题在本机 Java 项目上是相同的 我正在将 SDK 更新到 5 1 并在之前运行良好的代码上遇到了一个奇怪的错误 imageStream file imageStream Mvx Trace path
  • 启动 minikube 时无法设置 kubeconfig

    我已经安装了kubectl and minikube在我的 Windows 环境中 但是运行时minikube 启动它在 virtualBox 上创建虚拟机 但当它尝试在 Docker 上准备 kubernetes 时出现此错误 C Use
  • 对 Int32 或 UInt32 中的位进行哈希处理的好方法是什么?

    我有一个伪随机数生成器的实现 特别是 George Marsaglia 的 XOR Shift RNG 我的实现在这里 FastRandom cs http sharpneat svn sourceforge net svnroot sha
  • Auth0 不会在页面刷新时保留电子邮件/密码的登录信息

    我使用 Auth0 作为使用 React 的 SPA 的身份验证提供程序 我已遵循Auth0 反应教程 https auth0 com docs quickstart spa react 01 login and 这个更详细的教程 http
  • 如何以编程方式评估托管 bean 中的 EL

    我想在基于 Seam JSF 的应用程序中添加一个简单的模板语言 让用户撰写自己的电子邮件 由于我不想创建新的解析器 因此我想使用统一表达语言自行设置上下文 我怎样才能做到这一点 如果您位于 JSF 上下文中 那么只需使用Applicati