我想基于Seam/JSF为我的应用程序添加一个简单的模板语言,让用户自己编写电子邮件.
由于我不想创建新的解析器,我想使用统一表达式语言自己设置上下文.
我怎样才能做到这一点?
如果您正坐在JSF上下文中,那么只需使用Application#evaluateExpressionGet()以编程方式评估包含EL表达式的字符串.
String unevaluatedString = convertMailTemplateToStringSomehow();
FacesContext context = FacesContext.getCurrentInstance();
String evaluatedString = context.getApplication().evaluateExpressionGet(context, unevaluatedString, String.class);
// ...
Run Code Online (Sandbox Code Playgroud)
如果您没有坐在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 } !
// ...
Run Code Online (Sandbox Code Playgroud)