java - 编写自定义 jSTL 函数 - 文件未找到错误

标签 java jsp jstl

我想编写自己的自定义 JSTL 库:

我创建了一个带有静态函数的类

public class Utils {
    public static  String getAll(String test) {
        return "";
    }
}

在我的 web.xml 文件中,我在 jsp-config 下添加了:

<taglib>
 <taglib-uri>
     http://schema.test.com/xmlns
 </taglib-uri>
 <taglib-location>
    /WEB-INF/tags/utils.tld
 </taglib-location>
</taglib>

我在 WEB-INF/tags 中创建了一个文件夹 我创建了一个 utils.tld 文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<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 http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.0">

    <tlib-version>1.0</tlib-version>
    <short-name>url-construction</short-name>
    <uri>http://schema.test.com/xmlns</uri>

    <function>
        <name>UtilFunctions</name>
        <function-class>com.test.website.jstl.utils</function-class>
        <function-signature>java.lang.String getAll(java.lang.String)</function-signature>
    </function>

</taglib>

在我的 JSP 中:

<%@ taglib uri="/WEB-INF/tags/utils" prefix="cg" %>

<c:set var="displayName" value="${cg:getAll("xyz")}"/>

我收到错误:org.apache.jasper.JasperException:找不到文件“/WEB-INF/tags/utils”

最佳答案

tld 文件中的以下问题可能是原因。

<function-class>com.test.website.jstl.utils</function-class>

但是你的类(class)是

public class Utils {
    public static  String getAll(String test) {
        return "";
    }
}

Java 是区分大小写的语言。您应该按原样传递类(class)的完整限定名称。

关于java - 编写自定义 jSTL 函数 - 文件未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46904061/

相关文章:

jsp - 是否需要在tomcat web.xml 上配置JSTL 库?

java - 如何绑定(bind) JSP 页面和 Controller 的 session 范围字段?

eclipse - HTTP 状态 404 - 请求的资源 (/ProjectName/) 不可用

html - 如何使用 JSP 交替 HTML 表格行颜色?

java - 无法从 JSP 中的 bean 内部获取列表

java - 如何通过JavaFX从Mariadb数据库获取数据到表?

java - 修改 Liferay 的 Marketplace portlet

java - Intellij 无法读取任何 Maven 相关的导入或类

java - 转换 servlet 时出错 : "main" to javax. servlet.Servlet

jsp - 与 JSTL 中的枚举值比较