那就从简单的标签说起吧!1.x中常用的标签只有4中html、bean、logic、tiles

而struts2.0里的标签却没有分类,只用在jsp头文件加上

<%@ taglib prefix="s" uri="/struts-tags" %>   就能使用struts2.0的标签库

下面就介绍每个标签的具体应用实例说明:按字母排列

A:

1.   
2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a>   
3. <s:action name=""></s:action>-----执行一个view里面的一个action   
4. <s:actionerror/>-----如果action的errors有值那么显示出来   
5. <s:actionmessage/>-----如果action的message有值那么显示出来   
6. <s:append></s:append>-----添加一个值到list,类似于list.add();   
7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax

B:

1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值

C:

1. <s:checkbox></s:checkbox>-----复选框   
2. <s:checkboxlist list=""></s:checkboxlist>-----多选框   
3. <s:combobox list=""></s:combobox>-----下拉框   
4. <s:component></s:component>-----图像符号

D:

1. <s:date/>-----获取日期格式   
2. <s:datetimepicker></s:datetimepicker>-----日期输入框   
3. <s:debug></s:debug>-----显示错误信息   
4. <s:div></s:div>-----表示一个块,类似于html的<div></div>   
5. <s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框

E:

1. <s:if test=""></s:if>   
2. <s:elseif test=""></s:elseif>   
3. <s:else></s:else>-----这3个标签一起使用,表示条件判断

F:

1. <s:fielderror></s:fielderror>-----显示文件错误信息   
2. <s:file></s:file>-----文件上传   
3. <s:form action=""></s:form>-----获取相应form的值

G:

1. <s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用

H:

1. <s:head/>-----在<head></head>里使用,表示头文件结束   
2. <s:hidden></s:hidden>-----隐藏值

I:

1. <s:i18n name=""></s:i18n>-----加载资源包到值堆栈   
2. <s:include value=""></s:include>-----包含一个输出,servlet或jsp页面   
3. <s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入   
4. <s:iterator></s:iterator>-----用于遍历集合

L:

1. <s:label></s:label>-----只读的标签

M:

1. <s:merge></s:merge>-----合并遍历集合出来的值

O:

1. <s:optgroup></s:optgroup>-----获取标签组   
2. <s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框

P:

1. <s:param></s:param>-----为其他标签提供参数  
struts2的s:param标签主要有两个属性name与value, 若想在value属性中输入直接量,则可以这样写:<s:param name="some" value="%{'user'}"/>, 也可以这样写:<s:param name="some">user</s:param>。但如果直接赋值,这个值不是由Action动态生成的,而是自己指定的一个字符串,则只能用后者

2. <s:password></s:password>-----密码输入框   
3. <s:property/>-----得到'value'的属性   
4. <s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性

R:

1.   
2. <s:radio list=""></s:radio>-----单选按钮   
3. <s:reset></s:reset>-----重置按钮

S:

1. <s:select list=""></s:select>-----单选框   
2. <s:set name=""></s:set>-----赋予变量一个特定范围内的值   
3. <s:sort comparator=""></s:sort>-----通过属性给list分类   
4. <s:submit></s:submit>-----提交按钮   
5. <s:subset></s:subset>-----为遍历集合输出子集

T:

1. <s:tabbedPanel id=""></s:tabbedPanel>-----表格框   
2. <s:table></s:table>-----表格   
3. <s:text name=""></s:text>-----I18n文本信息   
4. <s:textarea></s:textarea>-----文本域输入框   
5. <s:textfield></s:textfield>-----文本输入框   
6. <s:token></s:token>-----拦截器   
7. <s:tree></s:tree>-----树   
8. <s:treenode label=""></s:treenode>-----树的结构

U:

1. <s:updownselect list=""></s:updownselect>-----多选择框   
2. <s:url></s:url>-----创建url

___________________________________________________

struts2框架的标签库分为三类:

用户标签:生成HTML元素 
非用户标签:数据访问、逻辑控制等。 
AJAX标签:支持AJAX技术。 
用户界面标签又分两类:

表单标签:生成HTML页面的from元素 
非表单标签:生成页面上的Tab、Tree等 
非界面标签又分为数据访问标签和流程控制标签。

控制标签:

if/elseif/else标签:控制流程分支。 
iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 
append标签:将多个集合对象拼接在一起,组成一个新的集合。将多个集合使用一个<iterator/>标签完成迭代。 
generatot标签:将指定的字符串按照规定的分隔符分解成多个子字符串。 
merge标签:将多个集合拼接在一起。 
subset标签:获取某个集合的子集合。 
sort标签:多指定的集合元素进行排序。 
数据标签:

action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。 
bean:创建一个JavaBean实例。。 
date:格式化输出一个日期属性。 
debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。 
i18n:指定国际化资源文件的baseName。 
include:包含其他的页面资源。 
param:设置参数。 
property:输出某个值。可以输出值栈、StackContext 、ActionContext中的值。 
push:将某个值放入值栈。 
set:设置一个新的变量。 
text:输出国际化信息。 
url:生成一个URL地址。 
表单标签:

checkbox标签:复选框。 
checkboxlist标签:根据一个集合属性创建一系列的复选框。 
combobox标签:生成一个单选文本框和一个下拉列表框的组合。 
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 
datetimepicker标签:生成一个日期、时间下拉列表框。 
head标签:生成HTML页面的HEAD部分。 
file标签:在页面上生成一个上传文件元素。 
hidder标签:生成一个不看见的用户输入元素。 
select标签:生成下拉列表框。 
optiontransferselect标签:创建两个选项以及转移下拉列表项,该标签生成两个下拉列表框,同时生成相应的按钮,这些按钮可以控制选项在两个下拉列表之间移动、排序。 
radio标签:单选框。 
optgroup标签:生成一个下拉列表框的选择组,下拉列表框中可以包含多个选择组。 
token标签:防用户多次提交表单。 
textarea标签:文本域。 
updownselct标签:支持选项内容的上下移动。 
password表单:密码表单域。 
textfield标签:单行文本输入框。 
非表单标签:

actionerror标签:输出Action中getActionErrors()方法返回的异常信息。 
actionmessage标签:输出Action中getActionErrors()方法返回的信息。 
component标签:生成一个自定义的组件。 
div标签:AJAX标签,生成一个div片段。 
fielderror标签:输出异常提示信息。 
tabbedPanel:AJAX标签,生成HTML中的Tab页。 
tree标签:生成一个树形结构。 
treenode标签:生成树形结构的节点。

____________________________________________________
Struts之LOGIC标签库详解

1. logic:empty 
该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况: 
1)当Java对象为null时; 
2)当String对象为""时; 
3)当java.util.Collection对象中的isEmpty()返回true时; 
4)当java.util.Map对象中的isEmpty()返回true时。 
eg.

该句等同于: 
if (userList.isEmpty()) { 
... 
}

2. logic:notEmpty 
该标签的应用正好和logic:empty标签相反。

3. logic:equal 
该标签为等于比较符。 
eg1. 比较用户的状态属性是否1,若为1,输出"启用"; 
eg2. 如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。

4. logic:notEqual 
该标签意义与logic:equal相反,使用方法类似,略。

5. logic:forward 
该标签用于实现页面导向,查找配置文件的全局forward。struts-config.xml文件中全局转向 
eg. <logic:forward name="redirect"/>

6. logic:greaterEqual 
为大于等于比较符。 
eg. 当某学生的成绩大于等于60时,输出“及格”: 
<logic:greaterEqual name="student" property="scores" value="60"> 
及格 
</logic:greaterEqual> 
7. logic:greaterThan 
此为大于比较符,使用方法同logic:greaterEqual; 
8. logic:lessEqual 
此为小于等于比较符,使用方法同logic:greaterEqual; 
9. logic:lessThan 
此为小于比较符,使用方法同logic:greaterEqual; 
10. logic:match 
此标签比较对象是否相等; 
eg1. 检查在request范围内的name属性是否包含"hello"串: 
<logic:match name="name" scope="request" value="hello"> 
<bean:write name="name"/>中有一个“hello”串。 
</logic:match> 
eg2. 检查在request范围内的name属性是否已“hello”作为起始字符串: 
<logic:match name="name" scope="request" value="hello" location="start"> 
<bean:write name="name"/>以“hello”作为起始字符串。 
</logic:match> 
eg3. 
<logic:match header="user-agent" value="Windows"> 
你运行的是Windows系统 
</logic:match> 
11. logic:notMatch 
此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似

12. logic:messagePresent 
该标签用于判断ActionMessages/ActionErrors对象是否存在; 
eg. 如果存在error信息,将其全部输出: 
<logic:messagePresent property="error"> 
<html:messages property="error" id="err" > 
<bean:write name="err"/> 
</html:messages> 
</logic:messagePresent > 
13. logic:messagesNotPresent 
该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似 
14. logic:present 
此标签用于判断request对象传递参数是否存在。 
eg1. user对象和它的name属性在request中都存在时,输出相应字符串: 
<logic:present name="user" property="name"> 
user对象和该对象的name属性都存在 
</logic:present> 
eg2. 若有一个名字为“hello”的JavaBean,输出对应字符串: 
<logic:present name="hello" > 
有一个名字为“hello”的JavaBean。 
</logic:present> 
eg3. 
<logic:present header="user-agent"> 
we got a user-agent header. 
</logic:present> 
15. logic:notPresent 
此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似。 
16. logic:iterator 
用于显示列表为collection的值(List ,ArrayList,HashMap等)。 
eg1. 逐一输出用户列表(empList)中用户的姓名: 
<logic:iterate id="emp" name="empList"> 
<bean:write name="emp" property="name"/><br> 
</logic:iterate> 
eg2. 从用户列表中输出从1开始的两个用户的姓名 
<logic:iterate id="emp" name="empList" indexId="index" offset="1" length="2"> 
<bean:write name="index"/>.<bean:write name="emp" property="name"/><br> 
</logic:iterate> 
eg3. logic:iterator标签的嵌套举例 
<logic:iterate id="emp" indexId="index" name="empList"> 
<bean:write name="index"/>. <bean:write name="emp" property="name"/><br> 
<logic:iterate id="address" name="emp" property="addressList" length="3" offset="1"> 
<bean:write name="address"/><br> 
</logic:iterate> 
</logic:iterate> 
17. logic:redirect 
该标签用于实现页面转向,可传递参数。 
eg. <logic:redirect href="http://www.javaeye.com"/>

logic:iterate 
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:

使用一个运行时表达式,这个表达式的值是一个集合。 
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。 
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。 
上面所提到的集合可以是:

对象类型或原子类型的数组(Array)。 
java.util.Collection的实现,包括ArrayList,Vector。 
java.util.Enumeration的实现。 
java.util.Iterator的实现。 
java.util.Map的实现,包括HashMap,Hashtable和TreeMap。 
如果您叠代的集合中含有null的值,这时需要采取一定的措施,因为这时logic:iterate不会在page作用域中创建对象。一般是使用<logic:present>标签或<logic:notPresent>标签来判断一下。

下面是logic:iterate叠代ArrayList的示例的对象引用关系和部分代码:

图示 3. logic:iterate中对象的引用关系

图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:

public ActionForward execute(ActionMapping mapping,ActionForm. form,
    HttpServletRequest request,   HttpServletResponse response) {

ListForm. listForm. = (ListForm) form;
  
List<Person> persons = new ArrayList<Person>();
  
Person person1 = new Person();
person1.setId("00001");
person1.setName("赵辰");
  
Person person2 = new Person();
person2.setId("00002");
person2.setName("李为芳");
  
Person person3 = new Person();
person3.setId("00003");
person3.setName("王微");
  
persons.add(person1);
persons.add(person2);
persons.add(person3);
  
listForm.setPersons(persons);
  
return mapping.findForward("success");
}

标签输出的结果为:

00001-->赵辰 
00002-->李为芳 
00003-->王微

回页首 
logic:present 
如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:

检查具有指定名称的cookie是否出现。 
检查具有指定名称的header是否出现。 
检查具有指定名称的JSP Bean是否出现 或 检查具有指定名称的JSP Bean中的property属性是否出现。 
检查request中指定名称的参数是否出现。 
检查当前的认证用户是否与指定的安全角色相关联。 
检查当前认证的主体是否具有指定的名字。 
下面的代码示例了logic:present标签检查具有指定名称User-Agent的header是否出现:

<logic:present header="User-Agent">
您的浏览器是<bean:header id="userAgent" name="User-Agent"/>
    <bean:write name="userAgent"/>。<br/>
</logic:present>

logic:notPresent标签的应用正好和logic:present标签相反。

回页首 
logic:messagesPresent 
logic:messagesPresent标签用于以下情况:

在request作用域中存在一个ActionMessages对象,标签的property属性和ActionMessages中的property对应。 
在request作用域中存在一个ActionErrors对象,标签的property属性和ActionErrors中的property对应。 
存在一个String对象,将其转换(构造)成ActionMessage然后在添加到ActionMessages中。 
存在一个String Array对象,将数组中的每一个String转换成一个ActionMessage,在将其添加到ActionMessages中。 
标签的message属性值为true时将以Globals.MESSAGE_KEY为key在request作用域中查找Message,其它情况下,将name的值作为key查找,如果name 没有出现,默认值为Globals.ERROR_KEY。

下面的代码示例了logic:messagesPresent标签的典型用法:

<logic:messagesPresent>
<ul>
<html:messages id="message">
    <li><bean:write name="message"/></li>
</html:messages>
</ul>
</logic:messagesPresent>

标签logic:messagesNotPresent的应用正好和logic:messagesPresent的应用相反。

回页首 
logic:empty 
logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:

当Java对象为null时 
当String对象为""时 
当java.util.Collection对象中的isEmpty()返回true时 
当java.util.Map对象中的isEmpty()返回true时 
下面的代码示例了logic:empty标签判断集合persons是否为空:

<logic:empty name="listForm" property = "persons">
<div>集合persons为空!</div>      
</logic:empty>

logic:notEmpty标签的应用正好和logic:empty标签相反。

回页首 
logic:match 
logic:match标签用来处理子串匹配问题。

如果指定的值匹配该标签就会创建其标签体内的内容。该标签用于以下情况:

检查具有指定名称的cookie是否与该标签的value匹配。 
检查具有指定名称的header是否与该标签的value匹配。 
检查具有指定名称的JSP Bean是否与该标签的value匹配 或 检查具有指定名称的JSP Bean中的property属性值是否与该标签的value匹配。 
检查request中指定名称的参数值是否与该标签的value匹配。

下面的代码示例了logic:match标签的典型用法:

<logic:present header="User-Agent">
<logic:match header="User-Agent" value="MSIE 6.0">
    MS IE 6.0
</logic:match>
</logic:present>

logic:notMatch标签的应用正好和logic:match标签相反。

回页首 
logic:equal 
这里要介绍的不只是logic:equal(=)标签,而是要介绍一类标签,这类标签完成比较运算,包括:

logic:equal(=) 
logic:notEqual(!=) 
logic:greaterEqual(>=) 
logic:lessEqual(<=) 
logic:graterThan(>) 
logic:lessThan(<) 
该类标签的用法类似,我们只介绍logic:equal标签,其它的留给您自己去完成。

logic:equal是用来判断是否相等的。如果相等,该标签体中嵌入的内容就会被处理。该标签用于以下情况:

比较由该标签的cookie属性指定的cookie的值是否与该标签的value属性值相等。 
比较由该标签的header属性指定的header的值是否与该标签的value属性值相等。 
比较由该标签的name属性指定的JSP Bean是否与该标签的value属性值相等(property属性不出现)或比较由该标签的name属性指定的JSP Bean中的property属性值是否与该标签的value属性值相等。 
比较由该标签的parameter属性指定的参数值(request中)是否与该标签的value属性值相等。 
回页首 
logic:forward 
我觉得将forward和redirect这两个动作放到一起对比着介绍更加有利于理解,基于此原因也就将logic:forward和logic:redirect这两个标签也拿到这里一起介绍了。

让我们看看这两个动作的区别:

forward是在servlet内部执行,浏览器完全不会感知到这个动作,原始的url也不会改变,浏览器重新装载的话也只是对原始的请求进行简单的重复。 
redirect则分成两个步骤:第一步是web应用程序告诉浏览器第二个url,然后浏览器向第二个url发送请求。

redirect比forward慢,因为浏览器要做二次请求。还有就是要注意,在第一次的请求作用域(request作用域)内的bean对于第二次请求是不可见的。

理解了上面描述的区别也就知道了什么时候该选用logic:forward标签什么时候该选用logic:redirect标签了。logic:forward标签完成PageContext.forward()或HttpServletResponse.sendRedirect(),如何选择由控制器决定。logic:redirect标签完成HttpServletResponse.sendRedirect()。

在使用logic:redirect标签时我们可以向使用html:link一样构造baseurl和query参数。如果您感兴趣可以参考html:link标签。

<s:action>标签的用法
(2012-09-27 18:04:34)
转载▼
标签:
&lt;saction&gt;
struts2
杂谈
分类: struts2
使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有:

id: 可选属性,作为该Action的引用ID    
   
name:必选属性,指定调用Action    
   
namespace:可选属性,指定该标签调用Action所属namespace    
   
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.    
   
ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.

<s:action name="login" executeResult="true" namespace="/"></s:action>

传递参数

<s:action name="actinName" executeResult="true" namespace="/"> 
    <s:param name="currentPage" value="传递的值"></s:param> 
   </s:action>

<s:param ></s:param>是以request方式的值的,而不是以参数传值

所以request.getParameter("")会获取不到值

通过request.getAttribute("")方式可以获取

另外:使用<s:param ></s:param> value指代的是action定义的对象的名称,而不是一个值

和 <s:textfield>中的name是一个意思,所以要要传递字符串的不能把值写value中而应该写到

<s:param >写到这里</s:param> 
例如: 
struts.xml如下配置 
<package name="reportList" namespace="/reportList" extends="default"> 
<action name="tab_*" action="xxxx" method="{1}" 
<result></result> 
</action> 
</package> 
页面加载如下段 
<s:action na 
me="tab_gotoHeader" namespace="/reportList" executeResult="true"> 
<s:param name="headerMap" value="headerMap"></s:param> 
<s:param name="scopeId" value="1"></s:param> 
<s:param name="reportRemark" value="indicator.concept"></s:param> 
<s:param name="headerMap['lbName']" value="indicator.description"></s:param> 
</s:action> 
xxx.action中只要set,get headerMap,scopeId就可以拿到值了

struts2中的s标签解析相关推荐

  1. 二十四、Struts2中的UI标签

    二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...

  2. 项目中技术细节(button用法、前端操作json、 hibernate的query.setFirstResult的用法注意、struts2中日期格式化标签)

    button的用法 struts2 s:iterator 中按钮获得当前行数据,并跳转 <button id="submissionz" onclick="var ...

  3. filter中的dispatcher标签解析

    filter中的dispatcher标签解析 转载:https://blog.csdn.net/xiaokang123456kao/article/details/72885171 一.forward ...

  4. Struts2中的链接标签

    摘自:http://www.java3z.com/cwbwebhome/article/article2/21001.html 为了使从一个页面中链接一个动态数据变得简单,Struts2框架提供了一系 ...

  5. Struts2中的链接标签 s:url和s:a

    2011-08-03 11:05:56|  分类:java web |  标签: |字号大中小  订阅 普通链接 Web程序中最普通的应用是链接到其他页面,下面看Welcome.jsp. <%@ ...

  6. struts2中struts:iterator标签的使用

    参考: 1):struts2 标签的使用之二 s:iterator     http://blog.csdn.net/chinajust/article/details/3922760 2)Strut ...

  7. struts2中s:select标签的使用

    1 静态生成 <s:select name="user.sex" list="#{'0':'男','1':'女'}" label="性别&quo ...

  8. struts2中s:select标签在freemarker中的使用

    作者:Yan 1.第一个例子: <s:select list="{'aa','bb','cc'}" theme="simple" headerKey=&q ...

  9. struts2标签解析(一)

    在jsp中使用Struts2的标签 <%@ page language="java" import="java.util.*" pageEncoding= ...

最新文章

  1. unity人物刚体移动_Unity 刚体移动,自方向移动
  2. 字节Java面试必问:mysql索引类型属于
  3. 重装win8系统后变成C盘了别的分区的资料怎样恢复
  4. angular生命周期钩子ngOnChanges-父组件使子组件输入属性值变化时触发
  5. JMM如何解决顺序一致性问题-JMM层面的内存屏障
  6. go语言学习--string、int、int64互相转换,字符串的截取,数组和字符串的转换
  7. zabbix_get查看agent端的key值提示没有权限:Permission denied
  8. Linux网络子系统中协议栈的入口处理
  9. CentOS “libc.so.6: version ‘GLIBC_2.14‘ not found“解决方法,同理‘GLIBC_2.15‘ not found“
  10. Could not find an NgModule. Use the skip-import option to skip importing in NgModule.
  11. 红帽学习笔记[RHCSA] 第一周
  12. javascript 生成 UUID GUID 浏览器环境 NodeJS环境 纯JavaScript函数
  13. 巧用Redis做游戏跨服排行榜
  14. 2014第六届云计算大会参会体会和个…
  15. 企业邮箱怎么收发邮件,怎么保护公司邮件安全?
  16. 医学图像自适应计算图像窗宽窗位技巧
  17. Ngork内网穿透简单实现
  18. 一个数字几个字节_字节跳动安全沙龙闭幕 多位专家解析数字经济业务安全
  19. rtmp流放与flv格式视频问题解决
  20. 人工智能及其应用——第一章学习笔记

热门文章

  1. 安卓机如果相册不选图片就退出_教你怎么把照片制作成电子相册
  2. 梯度检验(gradients checking)
  3. matlab hsv颜色分割,车牌定位matlab程序:通过hsv彩色分割方式定位车牌
  4. 阿里架构师耗时 1 年,把 P8 所需要的整个 Java 体系,都整理到了一起
  5. 华科自动化模式识别大作业
  6. 九阳JYL-Y92与Y99型号破壁机对比评测
  7. 【题解】少女觉 (2019.08.12纪中【NOIP提高组】模拟 B 组T1)贪心
  8. 对共享单车摆放问题的调研
  9. 如何用快递单号查询快递物流情况
  10. rostopic中遇到Cannot load message