在web.xml中使用JSF EL表达式

时间:2013-08-29 19:13:33

标签: jsf java-ee jsf-2 el

我可以在web.xml中使用EL表达式吗? 喜欢这个

Web.xml中

<context-param>
        <param-name>primefaces.DIR</param-name>
        <param-value>#{userUtilityBacking.direction}</param-value>
</context-param>

和我的JSF bean一样

JSF bean

@ManagedBean(name="userUtilityBacking")
@SessionScoped
public class UserUtilityBacking  implements Serializable {

     private static final long serialVersionUID = 1L;
    private String direction  ;   
// and public setters and getter 

它会起作用吗?

1 个答案:

答案 0 :(得分:5)

  

我可以在web.xml中使用EL表达式吗?

不完全是这样。默认情况下,在应用程序启动期间解析web.xml时,servletcontainer不会EL-评估上下文参数。但是,像Ant和Maven这样的构建工具和一些像JBoss这样的servlet容器(在设置特定的配置设置之后)支持使用类似于EL的${...}语法在几个部署描述符XML文件中按名称内联环境变量和/或VM参数例如web.xmlejb-jar.xmlpersistence.xml。注意:因此那些您在JSF EL范围内声明的变量,例如托管bean。


  

会起作用吗?

仅当PrimeFaces获取静态值"#{userUtilityBacking.direction}"String,然后使用例如Application#evaluateExpressionGet()以编程方式EL评估它在当前EL上下文中时,它才有效。但是,基于PrimeFaces 3.5 source code,它并没有在任何地方这样做。看起来他们只为4.x实现了它。

在您的特定情况下,您最好直接在<html>元素上指定方向,以在文档范围内和/或在任意HTML或JSF组件的dir属性中应用它。

<html dir="#{userUtilityBacking.direction}">