簡體   English   中英

為什么我為自定義jsp EL函數得到JasperException PWC:6299?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM