首先 要注意的是
struts2中tag支持jsp,freeMarker ,velocity

因此,tag也有三种形式
例如:
JSP下的form标签: <s:form action="example">
velocity的form标签: #sform ("action=example")
freeMarker下的form标签: <@s.form action="example">

下面以JSP使用的标签为例:
1 <s:head>
 这个标签用在<head></head>中,
将会引入struts tag用到的一些css和js文件
 需要注意的是,如果任何ui tag或者ajax tag的theme属性值是ajax
 那么<s:head>必须有theme属性 并且它的值是ajax
 这将会额外地引入与ajax相关的js文件,比如dojo.js

2 <s:form>
 类似于struts 1.x 的<html:form>
 validate属性:默认是false
如果设为true 那么struts2框架会自动生成一个javascript的验证方法,
 并且根据validation.xml的配置客户端验证。
如果这个页面没有<s:head>标签将会产生js错误
 namespace属性:指定这个form需要提交到哪个namespace

3  <s:submit>
 theme属性:指明theme="ajax" 会使用ajax功能,通过异步方式传输数据
 targets属性:指定异步方式返回的数据显示的位置 ,
 例如<div id="div1"></div>....
<s:submit theme="ajax" targets="div1" name="nn"/>
 formId属性:允许远程提交表单,
即<s:submit>标签的位置并不在<s:form></s:form>范围内
 indicator属性:指定一个indicator,例如<img id="indicator" src=...
 在使用异步方式的时候,会产生一个表示正在loading的小图片

4 <s:autocompleter>自动填充器
 theme属性:如果theme值是simple,表示使用普通方式。
如果是ajax表示使用异步方式
 list属性:指定使用的数据集合。
它的值可以是action中的一个属性,直接在标签中指定
  例如:list="{'apple','banana','grape','pear'}"
 indicator属性: 指定一个indicator,theme属性必须是ajax,否则没有意义
 href属性:使用的数据集合从url中获取,
例如href="%{exampleList}"表示使用了一个<s:url>已经定义过的url:
<s:url id="exampleList"> 
 searchType属性:默认是startstring,也可以指定为startword或者substring,
表示自动填充的查询方式
 delay属性:指定动作等待多少毫秒
 loadMinimumCount属性:当loadOnTextChange为true时,
 loadMinimumCount表示输入了多少个字符后,才开始重新加载数据集合,
  这时theme属性必须是ajax,否则没有意义

5 <s:actionerror />
    作用大致相当于struts 1.x中的 <html:errors/>
  类似的还有<s:actionmessage />

6 <s:fielderror>
         字段验证错误的报错信息
         <s:fielderror>
         <s:param>field1</s:param>
         <s:param>field2</s:param>
    </s:fielderror>
    表示只显示field1,field2的错误信息,
如果没有<s:param/>表示显示全部
    错误信息的内容由action的.properties文件指定

7 <s:textfield/>
  输入框
  label属性:显示一段文字,
例如<s:textfield label="find"/>会自动生成HTML代码:find:<input type="text"/>
  labelposition属性:top/left,显示label的位置,
可以使用top将文字显示在输入框的上面
                                 默认是left

8 <s:token />
  生成一个令牌 ,防止用户重复提交表单 感觉这个相对于struts1.x是个倒退