jsf - 如何在托管 bean 中以编程方式评估 EL

标签 jsf el templating

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

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

我怎样才能做到这一点?

最佳答案

如果您处于 JSF 上下文中,那么只需使用 Application#evaluateExpressionGet() 以编程方式评估包含 EL 表达式的字符串。

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

如果您不在 JSF 上下文中,那么您需要使用独立的 EL API,例如 JUEL 。或者,如果您已经在使用 EL 3.0 并且该字符串表示唯一的 EL 表达式,则使用 ELProcessor API。
ELProcessor el = new ELProcessor();
el.defineBean("bean", new Bean());
el.eval("bean.foo"); // Without starting #{ and ending } !
// ...

关于jsf - 如何在托管 bean 中以编程方式评估 EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015410/

相关文章:

java - weblogic 上的 Seam + hibernate + jsf

jsp - 双嵌套EL变量?

java - 使用 <c :when> with an enumeration

javascript - 模板内容在连续调用 Angular 时不会更新

javascript - VueJS 2 中 <template> 中的 <template> 有什么用?

JSF2 : action and actionListener

JSF 2.3 f :websocket encryption setting

validation - 至少填写一个字段时,根据需要验证一组字段

java - 如何使用 Spring 表达式语言(或您知道的其他表达式语言)为定义为变量的一些对象列表赋值

java - 使用 Rythm 将变量与其他文本连接起来