eclipse学习(第二章:初识ssh)——15.Struts2的主题和模板(了解就好了)

eclipse学习(第二章:初识ssh)——15.Struts2的主题和模板(了解就好了)

术语 描述
tag(标签) 从JSP,FreeMarker或Velocity内部执行的一小段代码。
template(模板) 一些代码,通常是写在FreeMarker上的,可以由某些标签(HTML标签)呈现。
theme(主题) 封装在一起以提供公共功能的模板集合。

当你在Web页面中使用Struts2 标签(如<s:submit…>,<s:textfield…>等)时,Struts2 框架会生成具有预配置样式和布局的HTML代码。Struts2 具有三个内置主题:

Theme(主题) 描述
simple theme 没有“bells and whistles”的最小主题。例如,textfield标签呈现HTML标签无标记、验证、错误报告或任何其他格式或功能。
xhtml theme 这是Struts 2使用的默认主题,提供了simple theme具备的所有基础,并添加了几个功能,如HTML的标准两列表布局、每个HTML的标记、验证和错误报告等。
css_xhtml theme 这个主题提供了simple theme具备的所有基础,并添加了几个功能,如基于CSS的标准两列布局,对HTML Struts标签使用 ,HTML Struts每个标签的标记,根据CSS样式表放置等。

前言

本文是参考自一个网站后实践做的笔记
https://www.w3cschool.cn/struts_2/struts_themes_templates.html

如何设置主题

直接设置属性

<s:textfield name="name"  theme="xhtml"></s:textfield>

我们可以通过设置一个index.jsp和一个简单的action(ps:action随便定义都行,本次测试struts.xml中定义的action为paly)来处理一下
index.jsp内容如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<s:form action="play" method="post">
		名称:<s:textfield name="name" theme="xhtml" ></s:textfield>
		<s:submit value="提交"/>
	</s:form>
	
</body>
</html>

页面访问结果如下
eclipse学习(第二章:初识ssh)——15.Struts2的主题和模板(了解就好了)
网页源码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form id="play" name="play" action="/ssh_learn_topicAndModule/play.action" method="post">
<table class="wwFormTable">
		名称:<tr>
    <td class="tdLabel"></td>
    <td
><input type="text" name="name" value="" id="play_name"/></td>
</tr>


		<tr>
    <td colspan="2"><div align="right"><input type="submit" value="提交" id="play_0"/>
</div></td>
</tr>


	</table></form>



	
</body>
</html>

经过比较得知:

<s:textfield name="name" theme="xhtml" ></s:textfield>

其实最后在前端页面中显示是这样的,这里的id是根据你的action来生成的。

<tr>
    <td class="tdLabel"></td>
    <td
><input type="text" name="name" value="" id="play_name"/></td>
</tr>

本质

如何实现从s:xxx到一段新的代码块呢?这依赖于我们所拉取的这个jar包————struts2-core.x.y.z.jar文件。我们可以试着解压缩看看里面的内容。
对于给定的主题,每个struts标签都有一个关联的模板,如s:textfield -> text.ftl和s:password -> password.ftl等。这些模板文件压缩在struts2-core.x.y.z.jar文件中,它们为每个标签保留预定义的HTML布局。因此Struts2 框架使用Sturts标签和相关模板生成最终的HTML标记代码。
解压缩之后可以看到里面有个template文件夹
eclipse学习(第二章:初识ssh)——15.Struts2的主题和模板(了解就好了)

Struts 2 tags + Associated template file = Final HTML markup code
struts2标签+关联的模板文件=最终的HTML标记代码

默认模板的样式为:扩展名.ftl

最后说一句

其实我感觉你设置这种样式不如直接设置标签的style,这样也ok的,而且不同情况下基本都是要不同的样式,所以我觉得用处不大…

上一篇:解决struts 启动过程中出现的 Unable to load configuration错误


下一篇:Qt C++ 并发,并行,多线程编程系列1 什么是并发