我想使用一个简单实现的 tld 函数, MyAccessManager 是一个抽象类,并且有 2 个孩子以不同的方式覆盖一个函数:
public static <T extends MyAccessManager> boolean isAllowed(T accessMan, MyTypeEnum otherUsersEnum){
// trivial implementation
}
我也在我的 tld 定义文件 (*.tld) 中定义了上述方法。
我有 2 个类扩展了我的 MyAccessManager 并且我正在通过 EL 使用函数,例如:
<input name="foo" type="hidden" value="${mytaglib:isAllowed(param1, param2)}"/>
我将正确的参数(即子类实例作为 param1)传递给我的 tld 函数,但 webapp 抛出以下异常:
org.apache.jasper.JasperException: PWC6300: 在 TLD 中的方法签名中为函数 mytaglib:isAllowed 指定的类 T 找不到。吨
我的 tld 文件:
<function>
<description>Processes users access to specific resources</description>
<name>isAllowed</name>
<function-class>com.myproj.MyUtil</function-class>
<function-signature>boolean isAllowed(T,com.myproj.MyTypeEnum)</function-signature>
</function>
TLD 不支持 java 的类型参数吗?或者,有没有办法实现这样的功能?