org.apache.jasper.JasperException:未指定默认命名空间时,函数测试必须使用前缀

2024-05-12

我在我的项目中使用以下内容: Spring 3.0.1 + Apache Tiles 2.2.1 + Glassfish 2.1。我想做的是调用 jsp 页面中的某些方法并向其传递一些参数。例如,我有一个豆子:

@Component
@Scope(value = "singleton")
public class TestBean {
    public void test(String param){
        System.out.println("param = " + param);
    }
}

我有一个 jsp 页面:

<%@page contentType="text/html; charset=utf-8"%>
${testBean.test("hello")}

这段代码给了我一个例外,例如:

org.apache.jasper.JasperException:函数测试必须与 未指定默认命名空间时的前缀

如果我调用某个方法而不向其传递参数 - 一切正常。

我尝试将 jboss-el.jar 放入 WEB-INF/lib 中,并将所需参数放入 web.xml 中(如所解释的here https://stackoverflow.com/questions/3284236/jsf-2-0-method-invocation/3284328#3284328),但没有任何效果。

我仅限于上面列出的技术集,因此我无法添加任何内容,或者例如无法更改我的应用程序服务器的版本。

有了这些条件,我的问题有解决办法吗?


org.apache.jasper.JasperException:未指定默认命名空间时,函数测试必须使用前缀

这表明该环境不支持使用参数调用 bean 方法的新 EL 2.2 功能。过时的环境试图将表达式解释为具有符号的 EL 函数namespace:functionName()(就像 JSTL 函数一样)。例外只是抱怨namespace:无法找到零件以识别 EL 功能。但这毕竟是错误的。

您需要确保满足以下条件,以便能够在 EL 中调用带参数的 bean 方法:

  1. 目标容器必须支持 EL 2.2。所有 Servlet 3.0 兼容容器都是如此,因为 EL 2.2 是 Java EE 6 的一部分,而 Java EE 6 又涵盖了 Servlet 3.0。 Servlet 3.0 容器的示例包括 Tomcat 7.x、Glassfish 3.x 和 JBoss AS 6.x/7.x。

  2. The /WEB-INF/web.xml文件被声明符合 Servlet 3.0 规范(因此不是较旧的,例如 2.5)。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
    
        <!-- Config here. -->
    
    </web-app>
    

    否则,您的容器将以与版本匹配的后备方式运行web.xmlroot 声明,从而失去所有新的 Servlet 3.0 和 EL 2.2 的优点。

  3. 网络应用程序的/WEB-INF/lib does not包含源自旧版本容器的特定于容器的 EL 实现库,例如el-api.jar and/or el-impl.jar源自 Tomcat 6.x 左右。

您的具体问题是由使用非 Servlet 3.0 兼容容器引起的:旧的 Glassfish 2.x。

升级到玻璃鱼 3.x http://glassfish.java.net或寻找替代方法。 JBoss EL 方法仅适用于 JSF,不适用于 Spring 或“普通 JSP”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.apache.jasper.JasperException:未指定默认命名空间时,函数测试必须使用前缀 的相关文章

随机推荐