当前位置: 代码迷 >> Java Web开发 >> EL自定义函数中如果参数是一个对象怎么办
  详细解决方案

EL自定义函数中如果参数是一个对象怎么办

热度:230   发布时间:2016-04-16 21:56:08.0
EL自定义函数中如果参数是一个对象怎么处理
本帖最后由 cucurmber 于 2014-09-07 13:02:07 编辑
这里是java文件,函数里面有一个参数是我自己定义的类
package EL;
import java.util.List;
import model.Course;
public class IsContain {

public IsContain() {
// TODO Auto-generated constructor stub
}
/*
 * 判断已选的课程中是否包含某一特定课程*/
public static boolean IsContain(List<Course> list,Course course){
if(list.contains(course))
return true;
else
return false;
}
}
--------------------------------------------------------------------------------------------------------------------
TLD文件:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>my</description>
    <display-name>my</display-name>
<tlib-version>1.0</tlib-version>
<!--定义引用,要和web.xml中的<taglib-uri>一致-->
<uri>/my</uri>
<!-- 定义总的名称,引用时的prefix -->  
<short-name>my</short-name>
<function>
     <!-- 定义方法名称 -->  
<name>IsContain</name>
 <!-- 定义方法所在类的地址-->  
<function-class>EL.IsContain</function-class>
 <!-- 定义方法名称 标签-->  
<function-signature>
java.lang.Boolean IsContain(java.util.List,java.lang.Object)
</function-signature>
</function>
</taglib>
--------------------------------------------------------------------------------------------------------------
jsp页面引用:<%@ taglib uri="/my" prefix="my"%>
<c:forEach items="${courseList}" var="course" varStatus="vv">
     ${my:IsContain(selectedCourses,course)}
    </c:forEach>
请问大家这个对象的参数在TLD文件中这样写对吗?测试的时候不通过。
----------------------------------------------------------------------------------------------------------------------
错误如下:
type Exception report

message Method "IsContain" for function "IsContain" not found in class "EL.IsContain"

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Method "IsContain" for function "IsContain" not found in class "EL.IsContain"
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:410)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:182)
org.apache.jasper.compiler.Validator$ValidateVisitor$1MapperELVisitor.visit(Validator.java:1694)
org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:137)
------解决方案--------------------
引用:
Quote: 引用:

<function-class>jsp2.examples.el.Functions</function-class>


提示得很清楚了。。。
同时你把Object换成自己需要的类的类名吧

--------------------------------------------------------------------------------
这个Course是自己定义的类,是我需要的方法的里面的一个参数。那么我在TLD文件中应该如何写他的类型呢。比如说String类型的是java.lang.String .这个类作为参数应该怎么写呢?

你看你的Course在哪个包下面呀?包名.类名应该可以,如果还不行的话,可能就不支持自定义类型吧
  相关解决方案