在JSTL中编写自定义函数

时间:2014-11-29 11:37:34

标签: java function jsp jstl

我正在使用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中的方法所做的那样(在类中写入并在需要的地方访问它)?

提前感谢您的有价值的答案和评论?

1 个答案:

答案 0 :(得分:2)

您可以定义自己的自定义JSP标记。使用JSP 2.0,您可以使用JSP tag files,其语法与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} />