从xslt调用java函数不起作用
我知道有很多关于它的回应,但我想他尝试了很多,但都没有成功,所以,我来了: 我有一个XSL,我在里面调用一个java方法。在几次尝试后都找不到mypackage.MyClass,我得到了“实例方法new需要一个对象作为第一个参数”的粗略翻译,很抱歉。 但是MyClass没有定义构造函数,甚至没有默认构造函数。我试图定义一个空构造函数,但没有效果 当我尝试调用任何函数时,我会得到一个NullPointerException,因为我的实例变量为null。如果我采用我的方法并将其添加为静态,我会得到“实例方法MyMethod需要一个对象作为第一个参数” 而且,最好的。如果我使用任何默认的java类java.util.Date、java.lang.XXXX等等,我的测试都会正常工作 我快疯了 这是我的最后一个test.xsl从xslt调用java函数不起作用,java,eclipse,xalan,Java,Eclipse,Xalan,我知道有很多关于它的回应,但我想他尝试了很多,但都没有成功,所以,我来了: 我有一个XSL,我在里面调用一个java方法。在几次尝试后都找不到mypackage.MyClass,我得到了“实例方法new需要一个对象作为第一个参数”的粗略翻译,很抱歉。 但是MyClass没有定义构造函数,甚至没有默认构造函数。我试图定义一个空构造函数,但没有效果 当我尝试调用任何函数时,我会得到一个NullPointerException,因为我的实例变量为null。如果我采用我的方法并将其添加为静态,我会得到“
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://xml.apache.org/xalan/java/java.util.Date"
xmlns:java="http://xml.apache.org/xalan/java"
xmlns:test="mypackage.MyClass"
exclude-result-prefixes="date java test">
<xsl:template match="/">
<!-- WORKING EXAMPLE -->
<xsl:variable name="dateObject"
select="date:new(java_lang:Math.max(1027695561000,1038695561000))"/>
Date of object: <xsl:value-of select="$dateObject"/>
Time of object: <xsl:value-of select="date:getTime($dateObject)"/>
<!-- ERRORS... -->
<xsl:variable name="testObject1" select="test:new()"/>
<xsl:variable name="result" select="test:myMethod($testObject1)"/>
<xsl:variable name="testObject2" select="test:go()"/>
</xsl:template>
</xsl:stylesheet>
我使用EclipseLuna进行调试,使用Xalan2.7.1。
我的类在{project}/src/dsig文件夹下,我的xsl在{project}/resources文件夹下
我已经用xalan:extension标签测试过了,在官方的xalan页面中缩写为,还有很多例子,包括一些来自这个论坛的例子,所有这些都是一样的
你能帮我一下吗
先谢谢你
问候
Tistklehoffxmlns:test=java:mypackage.MyClass?xmlns:test=mypackage.MyClass可能应该是xmlns:test=xalan://mypackage.MyClass 但除此之外,你在这里的东西应该已经起作用了。谢谢你的回复!对于xmlns:test=java:mypackage.MyClass,方法instance和static都返回:“instance method new/go需要一个实例对象作为第一个参数”。通过添加xmlns:xalan=http://xml.apache.org/xalan和xmlns:test=xalan://mypackage.MyClass 结果是一样的。还有其他想法吗?亲切的问候。
package mypackage;
public class MyClass{
public String myMethod(){
return "YESSSS!!!";
}
public static String go(){
return "GOOOO!!!";
}
}