我在项目中使用了以下内容:Spring 3.0.1 + Apache Tiles 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:当未指定默认名称空间时,功能测试必须与前缀一起使用
如果我在不传递参数的情况下调用某个方法-一切正常。
我试图把的jboss-el.jar在我的WEB-INF / lib目录,并把所需的参数在web.xml(如解释在这里),但没有效果。
我仅限于上面列出的一组技术,因此我无法添加任何内容,例如,不能更改我的应用服务器的版本。
在所有这些条件下,是否可以解决我的问题?
org.apache.jasper.JasperException
:当未指定默认名称空间时,功能测试必须与前缀一起使用
这表明环境不支持调用带参数的bean方法的新EL 2.2功能。过时的环境正试图将表达式解释为具有符号的EL函数namespace:functionName()
(例如JSTL函数)。唯一的例外是抱怨namespace:找不到零件以识别EL功能。毕竟这是错误的。
你需要确保满足以下条件才能使用EL中的参数调用bean方法:
目标容器必须支持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。
该/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的出色表现。
/WEB-INF/lib
并没有从旧的品牌/版,如容器包含容器具体实施EL原产库el-api.jar
和/或el-impl.jar
从Tomcat 6.x
的左右始发。你的具体问题是由使用非Servlet 3.0兼容的容器引起的:旧的Glassfish2.x。
升级到Glassfish 3.x或寻找其他方法。JBoss EL方法仅适用于JSF,不适用于Spring或“普通JSP”。
面临使用JAXB解组的问题。我需要使用多个名称空间。Java类是为第三方提供的XSD生成的。因此,我不想在Java类中的XMLRootElement指定名称空间,也不想手动更改多个类。 编组逻辑如下: xmlelement类TokenRequest.java BasicInRequestType.java 我在package-info.java中指定了前缀 TokenRequest元素实际上引用了
问题内容: 我有一个使用默认名称空间打印的文件。元素以ns2前缀打印,我需要将其删除,以及与我的代码的关系: 我希望它是: 这就是我的编码方式,据我所知,这足以使ns2消失: 生成的package-info结果如下: 我创建如下文件: generateClassesPackage是其中package-info.java及其元素所在的包。 Foo对象已定义,并具有以下元素: 我错过了吗?还是我误解了
问题内容: 我正在使用JAXWS为正在构建的Java应用程序生成WebService客户端。 当JAXWS构建其XML以用于SOAP协议时,它将生成以下名称空间前缀: 我的问题是,除非 我的 XML代理人(XML namepspace前缀为),否则我的Counterpart(一家大型汇款公司)将管理我的客户端连接到的服务器,拒绝接受WebService调用( 请不要问我为什么 )。像这样: 所以我
问题内容: 有没有一种方法可以在python ElementTree中定义默认/无前缀的命名空间?这似乎不起作用… 这也不是: 可以,但是我必须在每个元素前加上前缀: 在OSX上使用Python 3.5。 编辑:如果答案为“否”,您仍然可以获得赏金:-)。我只是想要一个花了很多时间使用它的人的明确“否”。 问题答案: 没有简单的方法可以透明地处理默认名称空间。正如您已经提到的,为空名称空间分配非空
我想知道是否有一种方法来强制JAXB创建与XSD模式相同的名称空间前缀。即,即使我从一个包含xmlns:cts=“http://cts.com”的模式创建JAXB类,在封送类之后,我得到一个具有xmlns:ns1前缀的XML。我知道我可以通过使用NamespacePrefixMapper类来重写这些,但是为什么我需要在我的XSD明确定义了默认前缀的情况下手动执行此操作呢?在我当前的XML中有大量的
我正在开发一个客户端来使用 Web 服务,但由于某种原因,除非所有命名空间都正确且没有任何前缀,否则我的请求没有得到正确处理。 我所有的类都是由服务提供商使用提供的XSD和WSDL创建的。 NfeDadosMsg.class 包装信息.java TConsStatServ.class package br.inf.portalfiscal.nfe; 包装信息.java 输出xml: 由于某种原因,