首页 > 解决方案 > 和 有什么区别JSP 中的元素?

问题描述

我正在开发一个简单的 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>呈现具有从用户当前的 Locale 对象中提取的语言属性的 HTML<html>元素(如果有的话)。

<html:base>呈现带有指向封闭 JSP 页面绝对位置的 href 属性的 HTML 元素。此标记仅在嵌套在 HTML<head>元素中时有效。此标记很有用,因为它允许您在页面中使用根据页面本身的 URL 计算的相对 URL 引用,而不是最近提交发生的 URL(这是浏览器通常解析相对反对)。

标签: javahtmljspstruts-1

解决方案


<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>是告诉taglib,在渲染JSP 时html要渲染一个html元素的前缀。

所以回答你的问题<html>是一个 HTML 指令,而<html:html>一个 Struts JSP taglib 标记来生成一个 HTML<html>指令。


推荐阅读