Java 为什么我会得到一个定制jspel函数的JasperException PWC:6299?
我有一个自定义EL函数,定义如下:Java 为什么我会得到一个定制jspel函数的JasperException PWC:6299?,java,jsp,Java,Jsp,我有一个自定义EL函数,定义如下: <function> ... <function-signature> java.lang.String getAsText(com.test.Outerclass.InnerEnum) </function-signature> ... </function> 当我试图查看该页面时,出现以下异常: org.apache.jasper.JasperException: PWC6299:
<function>
...
<function-signature>
java.lang.String getAsText(com.test.Outerclass.InnerEnum)
</function-signature>
...
</function>
当我试图查看该页面时,出现以下异常:
org.apache.jasper.JasperException: PWC6299: The class com.test.Outerclass.InnerEnum specified in TLD for the function conversion:getAsText cannot be found: com.test.Outerclass.InnerEnum
我的servlet容器是Jetty(7.1.6.v20100715发行版)。这包括以下罐子
javax.servlet.jsp.jstl_1.2.0.v201004190952.jar
javax.servlet.jsp_2.1.0.v201004190952.jar
org.apache.taglibs.standard.glassfish_1.2.0.v201004190952.jar
javax.el_2.1.0.v201004190952.jar
org.apache.jasper.glassfish_2.1.0.v201007080150.jar
我在这里发现了一个相关的问题,然而,作者接受了一个答案,这个答案没有给出任何关于如何解决这个问题的实际指示
编辑:
为了澄清,类和枚举在GoogleProtocolBuffers消息中定义,java代码由protoc编译器生成。无法更改生成的代码。若要使
com.test.Outerclass.InnerEnum
标识符正常工作,InnerEnum
应该是嵌套的枚举,而不是内部枚举。即,向其添加修饰符static
package com.test;
public final class Outerclass {
public static enum InnerEnum {
// ommited for clarity
}
}
嵌套类/枚举可以在外部类之外构造/使用。内部类/枚举不能,至少不能直接添加额外的反射逻辑层。一般的JSP EL实现都没有这个功能。我现在通过使用字符串作为参数而不是枚举本身来解决这个问题。然后将字符串转换为枚举值(string)。这不是我真正想要的,但却完成了任务 为避免误会:
package
是无效的包名。但是,这应该导致编译错误,而不是运行时错误。请相应地更新您的问题。使用mypackage
,com.example
等代替my.package
。我更新了我的问题,以反映我无法修改java类,因为它是由protocol buffers编译器生成的。然而,我将投票表决这一点,并保持在我的知识库,因为这是很好的知道。
package com.test;
public final class Outerclass {
public static enum InnerEnum {
// ommited for clarity
}
}