java - EVAL_BODY_AGAIN、SKIP_BODY 和 EVAL_BODY_INCLUDE 的目的是什么

标签 java jsp jsp-tags spring-tld

我对于在 JSP 中创建自定义标记还很陌生。当我浏览一些教程时,我看到它们使用 EVAL_BODY_AGAIN、SKIP_BODY 和 EVAL_BODY_INCLUDE 标签。谁能告诉我它的实际含义和用途吗?

最佳答案

SKIP_BODY :它是一个可选的返回值,但当您想要跳过正文评估时,必须由 doStartTag() 返回该值,即当 TagLibraryDescriptor 文件包含元素为空时必须返回该值,值“empty”表明总会有一个空 Action 。

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

关于java - EVAL_BODY_AGAIN、SKIP_BODY 和 EVAL_BODY_INCLUDE 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42508175/

相关文章:

java格式化表格输出

java - NullPointerException 为 "getSupportActionBar().setDisplayHomeAsUpEnabled( true )"?

java - spring maven项目需要添加哪些jsp依赖?

javax.servlet.jsp.JspException : No getter method available for property 异常

java - 用于访问当前登录用户对象的 ACEGI 标记

java - 如何在 DROPBOX 中使用 MULTIPART 文件上传来上传文件

java - 如何从它本身(也是主类)更新GUI?

java - Tomcat : 503 Service Temporarily Unavailable 问题

java - 图像未显示(一张图像正在显示,另一张图像未显示)

java - 有没有办法重用<c :url> logic inside my custom JSP tag?