我想在基于 Seam / JSF 的应用程序中添加一个简单的模板语言,让用户撰写自己的电子邮件。
由于我不想创建新的解析器,因此我想使用统一表达语言自行设置上下文。
我怎样才能做到这一点?
如果您位于 JSF 上下文中,那么只需使用Application#evaluateExpressionGet() http://docs.oracle.com/javaee/7/api/javax/faces/application/Application.html#evaluateExpressionGet-javax.faces.context.FacesContext-java.lang.String-java.lang.Class-以编程方式计算包含 EL 表达式的字符串。
String unevaluatedString = convertMailTemplateToStringSomehow();
FacesContext context = FacesContext.getCurrentInstance();
String evaluatedString = context.getApplication().evaluateExpressionGet(context, unevaluatedString, String.class);
// ...
如果您不在 JSF 上下文中,那么您需要使用独立的 EL API,例如JUEL http://juel.sourceforge.net/guide/start.html。或者,如果您已经使用 EL 3.0 并且该字符串表示唯一的 EL 表达式,则使用ELProcessor http://docs.oracle.com/javaee/7/api/javax/el/ELProcessor.html API.
ELProcessor el = new ELProcessor();
el.defineBean("bean", new Bean());
el.eval("bean.foo"); // Without starting #{ and ending } !
// ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)