加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – org.apache.jasper.JasperException:当未指定默认命名

发布时间:2020-12-14 16:47:35 所属栏目:Java 来源:网络整理
导读:我正在为我的项目使用以下内容: Spring 3.0.1 Apache Tile 2.2.1 Glassfish 2.1.我想要做的是在jsp页面中调用一些方法,并传递一些参数.例如,我有一个bean: @Component@Scope(value = "singleton")public class TestBean { public void test(String param){
我正在为我的项目使用以下内容:
Spring 3.0.1 Apache Tile 2.2.1 Glassfish 2.1.我想要做的是在jsp页面中调用一些方法,并传递一些参数.例如,我有一个bean:
@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: The function test must be used with
a prefix when a default namespace is not specified

如果我调用一些方法而不传递参数 – 一切都OK.

我试图将jboss-el.jar放在我的WEB-INF / lib中,并将所需参数放在web.xml中(如here所述),但不起作用.

我只限于上面列出的一组技术,所以我无法添加任何东西,或者例如,不能更改我的应用服务器的版本.

有了这些条件,我的问题有解决方案吗?

解决方法

org.apache.jasper.JasperException: The function test must be used with a prefix when a default namespace is not specified

这表明环境不支持使用参数调用bean方法的新EL 2.2功能.过时的环境正在尝试将表达式解释为具有符号命名空间的EL函数:functionName()(如JSTL函数).例外只是抱怨命名空间:部分找不到以识别EL功能.但毕竟是错的.

您需要确保满足以下条件才能使用EL中的参数调用bean方法:

>目标容器必须支持EL 2.2.所有Servlet 3.0兼容的容器都可以做,因为EL 2.2是Java EE 6的一部分,而这也是Servlet 3.0的一部分. Servlet 3.0容器的示例是Tomcat 7.x,Glassfish 3.x和JBoss AS 6.x / 7.x.
> /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.xml根声明中匹配的版本的后备模式中,特此将丢失所有新的Servlet 3.0和EL 2.2.
> webapp / WEB-INF / lib不包含源自较早版本的容器的容器特定的EL实现库,例如源自Tomcat 6.x的el-api.jar和/或el-impl.jar或者.

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

升级到Glassfish 3.x或寻找替代方法. JBoss EL方法仅适用于JSF,而不适用于Spring或“plain JSP”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读