1)直接由表达式字符串生成javax.el.ValueExpression和javax.el.MethodExpression,主要适用于动态构造jsf组件
org.jboss.seam.core.Expressions
@Name("org.jboss.seam.core.expressions")
Expressions.instance().createValueExpression("#{var11.address}").toUnifiedValueExpression()
Expressions.instance().createMethodExpression("#{var11.f1()}").toUnifiedMethodExpression()
主要适用于动态构造jsf组件,给组件属性设置表达式。
javax.faces.component.html.HtmlOutputText out2=new javax.faces.component.html.HtmlOutputText();
out2.setValueExpression("value", Expressions.instance().createValueExpression("#{var11.city}").toUnifiedValueExpression());
2)在seam组件中直接执行el表达式,就像在页面组件中一样。
Expressions.instance().createMethodExpression("#{search.refresh()}").invoke();
List newList=(List)Expressions.instance().createValueExpression(("#{search.resultList}").getValue();
3)将java对象转成表达式,使得java对象可以直接在表达式中使用,比如seam扩展的jpa查询语句中可以插入表达式,针对in or需要list的查询语句特别有意义。当in list时不需要把list中的内容转换成字符串
h.xzqh in (#{list})这样就可以了,我们需要的就是将list对象转成表达式即可
Expressions.instance().createValueExpression(("#{list}").setValue(list);
em.createQuery(".....where ....h.xzqh in (#{list})").getResultList();
org.jboss.seam.core.Expressions
@Name("org.jboss.seam.core.expressions")
Expressions.instance().createValueExpression("#{var11.address}").toUnifiedValueExpression()
Expressions.instance().createMethodExpression("#{var11.f1()}").toUnifiedMethodExpression()
主要适用于动态构造jsf组件,给组件属性设置表达式。
javax.faces.component.html.HtmlOutputText out2=new javax.faces.component.html.HtmlOutputText();
out2.setValueExpression("value", Expressions.instance().createValueExpression("#{var11.city}").toUnifiedValueExpression());
2)在seam组件中直接执行el表达式,就像在页面组件中一样。
Expressions.instance().createMethodExpression("#{search.refresh()}").invoke();
List newList=(List)Expressions.instance().createValueExpression(("#{search.resultList}").getValue();
3)将java对象转成表达式,使得java对象可以直接在表达式中使用,比如seam扩展的jpa查询语句中可以插入表达式,针对in or需要list的查询语句特别有意义。当in list时不需要把list中的内容转换成字符串
h.xzqh in (#{list})这样就可以了,我们需要的就是将list对象转成表达式即可
Expressions.instance().createValueExpression(("#{list}").setValue(list);
em.createQuery(".....where ....h.xzqh in (#{list})").getResultList();
本文介绍了三种在JSF中动态生成和使用EL表达式的方法:1)通过字符串生成ValueExpression和MethodExpression;2)在Seam组件中执行EL表达式;3)将Java对象转换为EL表达式以用于JPA查询。

被折叠的 条评论
为什么被折叠?



