从xslt调用java函数不起作用

时间:2014-09-04 14:01:08

标签: java eclipse xalan

我知道有很多回复,但我和其中许多人一起尝试没有成功,所以,我在这里:

我有一个XSL,我正在调用java方法。经过几次尝试(找不到mypackage.MyClass)我得到了实例方法new需要一个对象作为第一个参数' (粗略翻译,我很抱歉)。 但是MyClass没有定义构造函数,甚至没有默认的构造函数。我尝试通过定义一个void构造函数,但没有效果。

当我尝试调用任何函数时,我得到一个NullPointerException,导致我的实例变量为null。如果我采用我的方法并添加为静态,我会得到'实例方法MyMethod需要一个对象作为第一个参数'。

和,最好的。如果我使用任何默认的java类(java.util.Date,java.lang.XXXX等),我的测试工作正常!

我疯了......

这是我的上一次test.xsl

<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>

我的班级:

package mypackage;

public class MyClass{

    public String myMethod(){
        return "YESSSS!!!";
    }

    public static String go(){
        return "GOOOO!!!";
    }
}

我使用eclipse Luna进行调试,并使用Xalan 2.7.1。 我的班级在{project} / src / dsig文件夹下,我的xsl在{project} / resources文件夹下。

我已经使用xalan:扩展标记进行了测试,使用了缩写(如官方xalan页面中)和许多示例(包括从该论坛中获取的一些)以及所有相同的内容......

你能帮我一把吗?

提前多多感谢。

问候。

Tistklehoff

0 个答案:

没有答案