EVAL_BODY_AGAIN,SKIP_BODY和EVAL_BODY_INCLUDE的目的是什么

时间:2017-02-28 11:57:13

标签: java jsp jsp-tags spring-tld

我对JSP中的自定义标记创建很新。当我浏览一些教程时,我使用EVAL_BODY_AGAIN, SKIP_BODY and EVAL_BODY_INCLUDE标签看到了它们。任何人都可以告诉我它的实际含义和含义是什么?

1 个答案:

答案 0 :(得分:0)

SKIP_BODY :这是一个可选的返回值,但是当您要跳过主体评估时,该值必须由doStartTag()返回;如果TagLibraryDescriptor文件包含空元素,则必须返回该值,值“空”表示将始终有一个空操作。

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>

输出如下

enter image description here