Java 通过EL3访问JSF中的静态成员(Tomcat 8.0.14/27)
正如标题所述,我在JSF中通过EL3呈现静态值时遇到问题 有一个类似于我的问题,但它在JSP中,并且有一个解决方法(参见此) 问题是,当我在任何.xhtml文件中使用如此简单的东西时,都没有呈现任何内容Java 通过EL3访问JSF中的静态成员(Tomcat 8.0.14/27),java,jsf,tomcat,el,static-members,Java,Jsf,Tomcat,El,Static Members,正如标题所述,我在JSF中通过EL3呈现静态值时遇到问题 有一个类似于我的问题,但它在JSP中,并且有一个解决方法(参见此) 问题是,当我在任何.xhtml文件中使用如此简单的东西时,都没有呈现任何内容 {Boolean.TRUE} 尽管这个网站说下面的方法可以奏效 {T(java.lang.Boolean).TRUE} 它也失败了,错误类似于 javax.el.ELException:未找到函数“T” 我已经尝试了中提到的解决方法。解决方法是在Tomcat库中用javax.servlet.JS
{Boolean.TRUE}
尽管这个网站说下面的方法可以奏效
{T(java.lang.Boolean).TRUE}
它也失败了,错误类似于
javax.el.ELException:未找到函数“T”
我已经尝试了中提到的解决方法。解决方法是在Tomcat库中用javax.servlet.JSP-api-2.3.2-b01.jar替换JSP-api.jar。
这对我也不起作用:(
对我有效的是独立的实现,就像这样
ELProcessor elp=新的ELProcessor();
Object ret=elp.eval(“Boolean.FALSE”);
getLog().info(“输出值:”+ret);
我得到了正确的输出,就像这样
2015-10-07 17:38:13信息世界行动:38-输出值:假
我尝试了true和false值,它们都很好。不确定这些信息是否有用,但我使用的是spring 4.1.1和webflow 2.4.1。我还尝试了两个不同的tomcat实例8.0.14和8.0.27,两个都不起作用
我不可能是唯一一个处理这个问题的人。我还没有找到关于这个问题的错误报告,尽管有一个报告是为JSP报告和解决的
非常感谢您对喵喵的帮助。提前谢谢。阿罗哈
问题是,当我在任何.xhtml文件中使用如此简单的东西时,都没有呈现任何内容
{Boolean.TRUE}
不幸的是,这只能通过${Boolean.TRUE}
在JSP中工作,而不能在Facelets中工作
尽管这个网站说下面的方法可以奏效
{T(java.lang.Boolean).TRUE}
该网站只包含提案/原型。最终实施的方式确实有所不同。对于最终实施,请阅读文档
基本上,更改需要在Facelets端完成,而不是在EL端。EL 3.0提供了对静态字段的支持,但Facelets根本没有利用它。即使EL 3.0在Facelets中也不起作用。这可能是一个疏忽。我在这方面有JSF EG
同时,最好的办法是创建一个定制的标记处理程序来完成这项工作。JSF实用程序库的组合中正好有这样的标记处理程序。您提到了OmniFaces的importConstants,所以我决定看看PrimeFaces是否有类似的东西,因为我已经在使用它了。它们有!PrimeFaces扩展确实有(我也在使用它)。所以像
这样的东西可以工作,我不需要下载其他库。这个解决方法现在很好:)