我对在 JSP 中创建自定义标签非常陌生。当我浏览一些教程时,我看到它们使用 EVAL_BODY_AGAIN, SKIP_BODY and EVAL_BODY_INCLUDE
标签。谁能告诉我它的实际含义和用途是什么?
问问题
2026 次
1 回答
2
SKIP_BODY : 可选返回值,但是当你想跳过body评估时必须由doStartTag()返回这个值,即当TagLibraryDescriptor文件包含元素为空时必须返回,值“empty”表示会有永远是一个空的动作。
EVAL_BODY_INCLUDE :它是一个可选的返回值,但是当您想要评估正文时,该值必须由 doStartTag() 返回。
例子 :
考虑一个类DoStartTagExample.java
package pack;
import javax.servlet.jsp.tagext.TagSupport;
public class DoStartTagExample extends TagSupport
{
public int doStartTag()
{
//return EVAL_BODY_INCLUDE;
return SKIP_BODY;
}
}
这是一个名为doStartTagExample.tld的示例 tld
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<tag>
<name>doStart</name>
<tag-class>pack.DoStartTagExample</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
现在写一个jsp doStartTagExample.jsp
<%@taglib uri="/WEB-INF/doStartTagExample.tld" prefix="dev" %>
<html>
<head>
<title>doStartTag() Example</title>
</head>
<body>
Jsp page content before starting tag.
<dev:doStart>
<br><b>contents displayed after the custom tag's
start tag is encountered.</b>
</dev:doStart>
<br>Jsp page content after closing tag.
</body>
</html>
输出将如下
于 2018-07-05T08:09:11.760 回答