4

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

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

我怎样才能做到这一点?

4

1 回答 1

11

如果您位于 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 表达式,则使用ELProcessorAPI。

ELProcessor el = new ELProcessor();
el.defineBean("bean", new Bean());
el.eval("bean.foo"); // Without starting #{ and ending } !
// ...
于 2012-10-22T16:40:13.703 回答