java – org.apache.jasper.JasperException:当未指定默认命名
我正在为我的项目使用以下内容:
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")} 这段代码给了我一个例外:
如果我调用一些方法而不传递参数 – 一切都OK. 我试图将jboss-el.jar放在我的WEB-INF / lib中,并将所需参数放在web.xml中(如here所述),但不起作用. 我只限于上面列出的一组技术,所以我无法添加任何东西,或者例如,不能更改我的应用服务器的版本. 有了这些条件,我的问题有解决方案吗? 解决方法
这表明环境不支持使用参数调用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. <?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. 您的具体问题是由使用非Servlet 3.0兼容的容器引起的:旧Glassfish 2.x. 升级到Glassfish 3.x或寻找替代方法. JBoss EL方法仅适用于JSF,而不适用于Spring或“plain JSP”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |