[英]Why am I getting a JasperException PWC:6299 for a custom jsp EL function?
我有一個定義如下的自定義EL函數:
<function>
...
<function-signature>
java.lang.String getAsText(com.test.Outerclass.InnerEnum)
</function-signature>
...
</function>
這是我班的樣子:
package com.test;
public final class Outerclass {
public enum InnerEnum {
// ommited for clarity
}
}
當我嘗試查看頁面時,出現以下異常:
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
我在這里找到了一個相關的問題,但是,作者接受了一個答案,但並未給出任何有關如何解決該問題的真實跡象。
編輯:
為了澄清起見,類和枚舉在Google協議緩沖區消息中定義,而Java代碼由協議編譯器生成。 結果代碼無法更改。
要使com.test.Outerclass.InnerEnum
標識符起作用, InnerEnum
應該是嵌套枚舉,而不是內部枚舉。 即向其添加修飾符static
。
package com.test;
public final class Outerclass {
public static enum InnerEnum {
// ommited for clarity
}
}
嵌套類/枚舉可以在外部類外部構造/使用。 內部類/枚舉至少在沒有添加反射邏輯的額外層的情況下至少不能直接進行。 一般的JSP EL實現沒有此功能。
我現在通過使用字符串作為參數而不是枚舉本身來解決此問題。 然后,我將字符串轉換為枚舉valueOf(String)。 不是我真正想要的,但是可以完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.