我正在开发一个简单的Struts 1.x Web应用程序,并且有一个名为success.jsp
的文件,这是示例代码:
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>success.jsp</title>
<html:base/>
</head>
<body>
<a href="myStart.do">Go to myStart</a>
</body>
</html:html>
默认情况下,使用
<html>
代替<html:html>
,请问这两个元素之间的主要区别是什么?是否需要指定它们的用途?此外,<html:base/>
元素的主要功能是什么?顺便说一句,我发现了这些元素的一些定义,但我需要澄清一下:
<html:html>
呈现一个HTML <html>
元素,该元素具有从用户当前的Locale对象提取的语言属性(如果有)。<html:base>
呈现具有href属性的HTML元素,该href属性指向封闭的JSP页面的绝对位置。仅当嵌套在HTML <head>
元素内时,此标记才有效。此标记很有用,因为它允许您使用页面中的相对URL引用,这些相对URL引用是根据页面本身的URL计算的,而不是最近一次提交所针对的URL(浏览器通常在该URL上解析相对反对)。 最佳答案
<html:html>
标记是Struts 1.x JSP Taglib指令,在JSP页面的此行中声明:
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
这些自定义标签的格式通常为
<prefix:tagname>
。在prefix
上声明的taglib
是将您的taglib容器绑定到taglib中可用的标记列表的内容。本质上,
<html:html>
告诉标记库,带有前缀html
的元素将在呈现JSP时呈现html
元素。因此,要回答您的问题,
<html>
是HTML指令,而<html:html>
是Struts JSP taglib标记以生成HTML <html>
指令。