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

时间:2012-10-22 16:11:14

标签: jsf el templating

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:8)

如果您正坐在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 } !
// ...
相关问题