控件标签
Struts 2 的标签有一组标签。更easy控制流程页面运行。下面是重要的Struts2控制标签列表:
if /else 标签:
这些标签运行可在每一种语言找到的一种基本条件流程。 'If'标签可用于本身或与“Else If''标签和/或单/多'Else'标签。例如以下图所看到的:
<s:if test="%{false}"> <div>Will Not Be Executed</div> </s:if> <s:elseif test="%{true}"> <div>Will Be Executed</div> </s:elseif> <s:else> <div>Will Not Be Executed</div> </s:else>
iterator标签:
这些迭代器将遍历一个值。一个可迭代的值能够是不论什么的java.util.Collection 和 java.util.Iterator。尽管超过一个迭代器遍历排序,能够使用标签对结果进行排序或子集标签的列表或者数组得到一个子集。
以下的演示样例检索当前对象的值栈getDays()方法的值,并用它来遍历。<s:property/>标签打印出迭代器的当前值。
<s:iterator value="days"> <p>day is: <s:property/></p> </s:iterator>
merge标签:
这些合并标记须要两个或两个以上的列表作为參数。并把它们合并在一起。例如以下所看到的:
<s:merge var="myMergedIterator"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:merge> <s:iterator value="%{#myMergedIterator}"> <s:property /> </s:iterator>
append 标签:
这些append标签须要两个或两个以上的列表作为參数,并追加它们放在一起,例如以下图所看到的:
<s:append var="myAppendIterator"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:append> <s:iterator value="%{#myAppendIterator}"> <s:property /> </s:iterator>
generator 标签:
generator标签生成一个迭代器的基础上提供val属性。
下面generator标签生成一个迭代器。并使用迭代器标签打印出来。
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}"> <s:iterator> <s:property /><br/> </s:iterator> </s:generator>
数据标签
Struts 2 的数据标签主要用于操作页面上显示的数据。以下列出的是重要的数据标签:
action标签:
此标记使开发者可以直接从JSP页面调用动作指定动作的名称和一个可选的命名空间。标签的主体内容是用行动来呈现结果。
不论什么结果处理器定义在struts.xml这个动作将被忽略。指定除非executeResult參数。
<div>Tag to execute the action</div> <br /> <s:action name="actionTagAction" executeResult="true" /> <br /> <div>To invokes special method in action class</div> <br /> <s:action name="actionTagAction!specialMethod" executeResult="true" />
include 标签:
将用于还有一个JSP页面中包括还有一个JSP文件。
<-- First Syntax --> <s:include value="myJsp.jsp" /> <-- Second Syntax --> <s:include value="myJsp.jsp"> <s:param name="param1" value="value2" /> <s:param name="param2" value="value2" /> </s:include> <-- Third Syntax --> <s:include value="myJsp.jsp"> <s:param name="param1">value1</s:param> <s:param name="param2">value2</s:param> </s:include>
bean 标签:
bean标签实例化一个类,符合JavaBeans规范。此标记的主体能够包括多个元素:參数设置该类别的不论什么mutator方法。
假设var属性设置在BeanTag上,它会放置到堆栈上下文的bean实例。
<s:bean name="org.apache.struts2.util.Counter" var="counter"> <s:param name="first" value="20"/> <s:param name="last" value="25" /> </s:bean>
date标签:
date标签,将让在一个高速和easy的方式格式化日期。能够指定自己定义格式(如“DD/ MM / YYYY HH:MM”),能够生成易读的符号(如“2小时,14分钟”)。或者能够依傍提前定义的格式关键 struts.date.format 属性文件。
<s:date name="person.birthday" format="dd/MM/yyyy" /> <s:date name="person.birthday" format="%{getText('some.i18n.key')}" /> <s:date name="person.birthday" nice="true" /> <s:date name="person.birthday" />
param 标签:
这些參数标签可用于參数其它标签。
该标签具有下面两个參数。
-
name (String) - 參数的名称
-
value (Object) - 參数的值
<pre> <ui:component> <ui:param name="key" value="[0]"/> <ui:param name="value" value="[1]"/> <ui:param name="context" value="[2]"/> </ui:component> </pre>
property 标签:
这些属性标签是用来获取属性的值,这将默认堆栈的顶部,假设没有指定。
<s:push value="myBean"> <!-- Example 1: --> <s:property value="myBeanProperty" /> <!-- Example 2: -->TextUtils <s:property value="myBeanProperty" default="a default value" /> </s:push>
push 标签:
这些push标签是用来推堆栈简化使用。
<s:push value="user"> <s:propery value="firstName" /> <s:propery value="lastName" /> </s:push>
set 标签:
这些set标签分配一个值给一个变量在指定的范围内。
它是实用的,当想分配一个变量到复杂的表达式。然后简单地引用变量每次而不是复杂的表达。可用的范围是application, session, request, page和行动。
<s:set name="myenv" value="environment.name"/> <s:property value="myenv"/>
text 标签:
这些 text 标签是用来呈现一个i18n 文本消息。
<!-- First Example --> <s:i18n name="struts.action.test.i18n.Shop"> <s:text name="main.title"/> </s:i18n> <!-- Second Example --> <s:text name="main.title" /> <!-- Third Examlpe --> <s:text name="i18n.label.greetings"> <s:param >Mr Smith</s:param> </s:text>
url 标签:
这些URL标签是用来创建一个URL。
<-- Example 1 --> <s:url value="editGadget.action"> <s:param name="id" value="%{selected}" /> </s:url> <-- Example 2 --> <s:url action="editGadget"> <s:param name="id" value="%{selected}" /> </s:url> <-- Example 3--> <s:url includeParams="get"> <s:param name="id" value="%{'22'}" /> </s:url>
Ajax 标签
Struts使用Dojo框架的 AJAX标记实现。
首先,这个样例中。你须要加入 struts2-dojo-plugin-2.2.3.jar。你能够得到这个文件的lib目录struts2的下载 (C:struts-2.2.3-allstruts-2.2.3libstruts2-dojo-plugin-2.2.3.jar)
对于这个锻炼。让我们改动 helloWorld.jsp例如以下:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sx" uri="/struts-dojo-tags"%> <html> <head> <title>Hello World</title> <s:head /> <sx:head /> </head> <body> <s:form> <sx:autocompleter label="Favourite Colour" list="{'red','green','blue'}" /> <br /> <sx:datetimepicker name="deliverydate" label="Delivery Date" displayFormat="dd/MM/yyyy" /> <br /> <s:url id="url" value="/hello.action" /> <sx:div href="%{#url}" delay="2000"> Initial Content </sx:div> <br/> <sx:tabbedpanel id="tabContainer"> <sx:div label="Tab 1">Tab 1</sx:div> <sx:div label="Tab 2">Tab 2</sx:div> </sx:tabbedpanel> </s:form> </body> </html>
当我们执行上面的样例中,我们能够得到以下的输出:

如今让我们通过这个样例一步来。
首先要注意的是另外一个新的标签库前缀 sx. (struts-dojo-tags)是专门创建的标记库的AJAX集成。
然后在HTML头。我们称之为sx:head。
这将初始化Dojo框架,使得它准备为全部的AJAX调用内页。这一步非常重要 - ,没有sx:head初始化Ajax调用不会起作用。
首先,我们有自己主动完毕标签。自己主动完毕标签看起来非常像一个选择框。它填充了红色,绿色和蓝色的值。
但之间的一个选择框而这一次不同的是。它自己主动完毕。也就是说,假设開始键入gr,这将填补它为“green”。除此之外。这个标签是非常相似s:select标签,我们前面介绍。
接下来,我们有一个日期时间选择器。
这个标签创建一个输入栏旁边的一个button。当按下button时,弹出一个显示日期和时间选择器。当用户选择的日期,该日期将填充到输入文本标记属性中所指定的格式。在我们的样例中。我们指定dd/MM/yyyy 日期格式。
接下来我们创建一个URL标记的system.action在前面的练习中。我们创建的文件。它并不一定要的system.action - 它能够是不论什么行动您之前创建的文件。然后我们有一个div设置超链接的url和延迟设置为2秒钟。
会发生什么事而言,"Initial Content"将显示2秒钟。然后div的内容将被替换的内容从hello.action运行。
最后,我们有一个简单的选项卡面板有两个选项卡。
标签的div标签“选项卡1和Tab2。
慢慢地随着每个版本号,它应该是值得注意的AJAX标签集成Struts,仍然是一个工作的进步和成熟整合。