一尘不染

用JSTL编写自定义函数

jsp

我正在使用jstl C:forEach在jsp中打印表。我像这样验证

         <c:choose>
          <c:when test="${varName eq condition}">
             <c:out value="${fn:substring(varName, 0, 3)}
          </c:when>
          <c:otherwise>
            ${varName}
          </c:otherwise>
         </c:choose>

因此,这将根据需要打印结果,并且我具有在相同页面以及其他页面中将相同字段用于其他字段的方案。

是否可以通过将参数传递给jstl代码来重用它。我们为中的方法所做的事情Java(编写类并在需要时访问它)?

在此先感谢您宝贵的答案和评论?


阅读 236

收藏
2020-06-08

共1个答案

一尘不染

您可以定义自己的定制JSP标记。在JSP
2.0中,可以使用JSP标记文件,其语法与JSP页面非常相似。

WEB-INF目录中创建一个子目录:/WEB-INF/tags/mytaglib

在此目录中,创建一个文件displayVarName.tag

<%@ tag body-content="empty" %> 
<%@ taglib prefix="c"   uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions"%>

<%@ attribute name="varName"    rtexprvalue="true"  required="true" type="java.lang.String"  description="Description of varName" %> 
<%@ attribute name="condition"  rtexprvalue="true"  required="true" type="java.lang.String"  description="Description of condition" %>

<c:choose>
   <c:when test="${varName eq condition}">
      <c:out value="${fn:substring(varName, 0, 3)}
   </c:when>
   <c:otherwise>
      ${varName}
   </c:otherwise>
</c:choose>

现在,您可以使用以下方式导入标签并在JSP页面中使用它:

<%@taglib prefix="mytaglib"   tagdir="/WEB-INF/tags/mytaglib"%>

<mytaglib:displayVarName varName=${varName} condition=${condition} />
2020-06-08