我想基于Seam / JSF为我的应用程序添加一个简单的模板语言,让用户自己编写电子邮件。
由于我不想创建新的解析器,我想使用统一表达式语言自己设置上下文。
我该怎么做?
答案 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 } !
// ...