我正在使用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
中的方法所做的那样(在类中写入并在需要的地方访问它)?
提前感谢您的有价值的答案和评论?
答案 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} />