【问题标题】:JSF displays EL expressions as plain text instead of evaluated valueJSF 将 EL 表达式显示为纯文本而不是评估值
【发布时间】:2012-04-17 02:21:24
【问题描述】:

我正在尝试创建一个“Hello World”JSF 应用程序。 我有一个带有一个字段(字符串)的 bean。

@ManagedBean (name = "beanTest")
@SessionScoped
public class BeanTest
{
    private String myString = "myString";
    public String getMyString()
    {
        return myString;
    }
    public void setMyString(String myString)
    {
        this.myString = myString;
    }
}

当我试图在我的 JSP 页面中显示字符串值时

<h:outputLabel value="#{beanTest.myString}"/>

在网页中显示"#{beanTest.myString}"而不是"myString"

这是怎么引起的,我该如何解决?

【问题讨论】:

    标签: java jsf el


    【解决方案1】:

    如果您的 web.xml 被声明为符合 Servlet 2.4 或更早版本,或者您的 /WEB-INF/lib 文件夹中充斥着 servletcontainer 特定库(如 el-api.jar 等旧版本),则可能会发生这种情况。

    确保web.xml 根声明至少符合 Servlet 2.5 或最好是容器支持的最高 Servlet API 版本,并且/WEB-INF/lib 文件夹不包含任何 servletcontainer 特定库。

    【讨论】:

    • 这会是因为应用程序不知道如何处理 EL 表达式吗?
    • @Zack:没错。 Servlet 2.4 和 2.5 中的 EL API 已更改。另请参阅 stackoverflow.com/questions/4812755/… 了解一些历史。 OP 的问题表明他基本上使用的是不兼容的 EL API,因此所有表达式都不会(无法)得到解决。
    • 你是对的。我将 web.xml 从 2.4 更改为 2.5,现在一切都像魅力一样。如何使用 2.4 版?
    • 要么降级到 JSF 1.2,要么提供你自己的 EL 实现(我不保证 100% 这个 hack 可以在所有容器中工作):stackoverflow.com/questions/5998447/…)
    【解决方案2】:

    为此使用h:outputtext

    【讨论】:

    • 虽然 h:outputLabel 确实是错误的标签,但它不会对具体问题产生任何影响。
    • @BalusC,你说得对。我应该删除这个答案。
    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多