标签说明Word格式文档下载.docx
- 文档编号:16367009
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:35
- 大小:111.09KB
标签说明Word格式文档下载.docx
《标签说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《标签说明Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
/a>
/li>
Logon"
SignOn<
/ul>
/body>
/html>
运行效果如下:
另一个常用的功能是使用链接来改变语言,在前章的HelloWorld页面中,让我们改变用户的语言,并根据对应的应用程序资源来呈现信息。
代码如下:
h2>
propertyvalue="
message"
/h2>
Languages<
urlid="
url"
action="
HelloWorld"
paramname="
request_locale"
en<
/s:
param>
url>
%{url}"
English<
a>
es<
Espanol<
代码是如何工作的?
上述例子中的“%{url}”将会被s:
url标签来求得对应的值。
在Welcome和HelloWorld页中,我们使用了两种不同的链接标签。
我们可以创建如下标签:
资源链接
直接的链接
带参数的链接
下面让我们分别看一下它们的使用:
1.
资源链接
首先在jsp的HEAD元素中,我们使用url标签来将资源引入到页面中,代码如下:
rel="
注意:
引用时绝对的。
我们可以移动该页面到其他路经而不用担心相对路径。
2.直接链接
我们可以使用链接标签来定向到Action,实例代码如下:
当链接运作的时候,链接标签能够自动追加正确的扩展,因此我们不需要在应用程序中嵌入。
这个标签也将会用会话id来编码链接的URL,因此Java的会话在请求之间能够保持。
3.带有参数的链接
在上述的有关改变语言的HelloWorld页中,我们可以使用带有参数信息的url标签来创建带有参数的链接,该段代码如下:
Welcome"
param标签将会在Welcome的Action的url后增加信息:
“?
request_locale=en”。
这个标签接着将“url”引用注入到超链接中。
通过增加param标签能够增加任意数量的标签。
二.
通配符映射
在上述例子的Welcome页面中,除了链接之外尚未添加任何内容,我们不需要添加Action类。
但是,我们仍然需要添加一个映射,以便我们可以使用actionURI(如果我们映射到action,而不是页面,我们在后面也可以很容易的添加Action类),映射代码如下:
actionname="
>
result>
/tutorial/Welcome.jsp<
/result>
/action>
当我们创建应用程序的时候,我们常常需要直接链接到页页面,为了使原型更加容易,我们可以将Welcome的进入改为通配符,修改后的映射如下:
*"
/tutorial/{1}.jsp<
这是代码是如何工作的呢?
如果找不到映射,本框架将会做如下工作:
将“Welcome”映射为星号
l将“Welcome”代替result中对应的“{1}”
同样的,如果在映射文件中找不到“Login”的映射,将会映射到“/tutorial/Login.jsp”页面。
通配符映射能够使得你能够创建你自己的规约,以便你能够避免冗余的配置。
三.数据输入表单
大多数应用程序都使用一些数据进入表单。
Struts标签使得输入表单更加容易,代码如下:
Login<
formaction="
textfieldlabel="
UserName"
name="
username"
passwordlabel="
Password"
password"
/>
submit/>
form>
执行效果如下:
代码是如何工作的呢?
JSP标签在页面顶部引入了Struts的标签库
Struts标签:
textfield、password和submit,每一个都写出了正确的Lable和控制类型
四.需要记住的东西
编写web应用程序的最难的一部分是编写页面。
本框架通过提供一系列的Struts标签使得编写页面更加容易。
Struts标签能够获得框架提供的动态数据。
标签减少了用来创建页面所需做的工作。
附录一
——标签使用指南
一.
通用标签
通用标签被用来在页面执行的时候,来控制执行流。
这些标签同样允许数据不是从Action或者值栈中提取,例如本地化、JavaBeans、包括额外的URL或action执行。
控制类标签提供了控制流,例如if,else和iterator
数据类标签允许数据操作或创建,例如bean、push和i18n
控制类标签有if、elseIf、else、append、generator、iterator、merge、sort、subset。
数据类标签有a、action、bean、date、debug、i18n、include、param、push、set、text、url、property。
分别介绍如下:
控制类标签
1)if、elseif和else
描述:
执行基本的控制流,if能单独使用,也可与else、elseif标签搭配使用。
参数:
名称
必选
默认值
求值
类型
描述
id
否
是
String
id用来引用元素。
对于UI或者form标签,它的意义等同于HTML的id属性
test
Boolean
用来决定标签体是否显示的表达式
使用举例:
iftest="
%{false}"
div>
WillNotBeExecuted<
/div>
if>
elseiftest="
%{true}"
WillBeExecuted<
elseif>
else>
2)append
该标签的工作是追加迭代器,
例如,如果有三个迭代器(每个迭代器有三个元素)需要追加,下面展示了这个追加迭代器是如何排列的。
首先是进入第一个迭代器的第一个元素;
第二步是进入第一个迭代器的第二个元素;
第三步是进入第一个迭代器的第三个元素;
第四步是进入第二个迭代器的第一个元素;
第五步是进入第二个迭代器的第二个元素;
第六步是进入第二个迭代器的第三个元素;
第七步是进入第三个迭代器的第一个元素;
第八步是进入第三个迭代器的第二个元素;
第九步是进入第三个迭代器的第三个元素。
如果提供了该id的值,将会具有追加迭代器存储到堆栈上下文中的合成结果
Action类的代码:
public
class
AppendIteratorTagAction
extends
ActionSupport
{
private
List
myList1;
myList2;
myList3;
String
execute()
throws
Exception
myList1
=
new
ArrayList();
myList1.add("
1"
);
2"
3"
myList2
myList2.add("
a"
b"
c"
myList3
myList3.add("
A"
B"
C"
return
done"
;
}
getMyList1()
{
getMyList2()
getMyList3()
jsp页面的代码:
appendid="
myAppendIterator"
paramvalue="
%{myList1}"
%{myList2}"
%{myList3}"
append>
iteratorvalue="
%{#myAppendIterator}"
property/>
iterator>
3)generator
创建一个基于提供的值的迭代器。
产生的迭代器将常常被推入堆栈顶部,而在标签结束的时候被推出。
converter
org.apache.struts2.util.IteratorGenerator.Converter
将从值中分析的字符串转换为一个对象的转换器
count
Integer
在迭代器中的最大值
如果提供了id,它将会用来存储产生的迭代器到页面上下文
separator
分隔符用来将迭代器中的值分开
val
用来解析成迭代器的源
举例:
例1:
pre>
例一:
产生一个简单的迭代器
generatorval="
%{'
aaa,bbb,ccc,ddd,eee'
}"
br/>
generator>
/pre>
这里产生了一个迭代器,并且使用iterator标签将它打印出来
例二:
产生一个带有count属性的迭代器
count="
这里产生了一个迭代器,但是只有其中的三个元素是可用的,这三个分别是aaa、bbb和ccc
例三:
产生一个带有id属性的迭代器
4"
separator="
"
id="
myAtt"
%
Iteratori=(Iterator)pageContext.getAttribute("
while(i.hasNext()){
Strings=(String)i.next();
%=s%>
%
}%>
产生了一个迭代器,并且将它存入页面上下文的指定的id(myAtt)属性中。
例四:
带有converter属性的generator标签
converter="
%{myConverter}"
publicclassGeneratorTagActionextendsActionSupport{
....
publicConvertergetMyConverter(){
returnnewConverter(){
publicObjectconvert(Stringvalue)throwsException{
return"
converter-"
+value;
}
};
...
产生的这个迭代器,它的每个元素由提供的转换器获得。
在这个转换器中,只是为每个元素增加了“converter-”。
thisconverter,itsimplyadd"
toeachentries.
4)iterator
迭代器将会迭代值。
一个可迭代的值可以是java.util.Collection,也可以是java.util.Iterator。
对于UI和表单标签,它与HTML的id标签相当
status
如果该值被指定,一个迭代状态的实例将会在每一个迭代中被推入堆栈中
value
用来进行迭代的迭代源,否则对象本身将会被放入新的产生的列表中
下面的例子取回在值栈中的当前对象的getDays()所返回的值,<
property/>
标签打印出当前迭代器的值,代码如下:
days"
p>
dayis:
/p>
在下面的例子中使用Bean标签并且将它存入ActionContext中。
iterator标签将会从ActionContext中取回对象而后调用它的getDays()方法。
状态属性常常用来创建IteratorStatus对象,在这个例子中,它的odd()方法用来改变行的颜色。
beanname="
org.apache.struts2.example.IteratorExample"
it"
day"
value="
'
foo'
bar'
bean>
p/>
tableborder="
0"
cellspacing="
cellpadding="
tr>
th>
Daysoftheweek<
/th>
/tr>
#it.days"
status="
rowstatus"
#rowstatus.odd==true"
tdstyle="
background:
grey"
/td>
td>
/table>
下个例子将进一步展示status属性的使用,使用通过OGNL从action类取得的DAO,成员的迭代以及它们的使用(在安全的上下文中),last()方法中指明了当当前的对象是迭代器的最后一个可用的对象,如果不是,我们需要使用逗号来分隔用户,代码如下:
groupDao.groups"
groupStatus"
trclass="
#groupStatus.odd==true"
odd<
even<
name"
description"
users"
userStatus"
fullName"
!
#userStatus.last"
<
下一个例子在一个actioncollection上迭代,并且将每一个迭代的值传给另一个action。
这里的诀窍在于使用”[0]”。
它获得当前的值并且将值传入editaction。
使用”[0]”与使用<
具有相同的效果(但是,后者,在param标签内部不起作用)。
代码如下所示:
entries"
#entries.entries"
pushvalue="
..."
edit"
entry"
[0]"
action>
/push>
下例使用iterator标签来模拟一个简单的循环,循环了5次,代码如下:
iteratorstatus="
stat"
{1,2,3,4,5}"
—获得当前的index(从0开始)-->
#stat.index"
—获得当前堆栈的值-->
—当前的迭代值(0,1,...5)-->
top"
5)merge
它是MergeIterator标签的组件,它的工作是合并迭代器和对合并后的迭代器的后续调用,它将使得每一个合并的迭代器有机会展示它的元素,接着下一个调用将会允许下一个迭代器来展示它的元素。
一旦最后一个迭代器已展示完它的所有元素,第一个迭代器又能够开始展示它的元素(除非元素已经用尽)。
从内部来说,任务将委托给MergeIteratorFilter去做。
下面展示了3个列表的合并,其中每个列表有3个元素,步骤如下:
1.
展示第一个列表的第一个元素;
2.
展示第二个列表的第一个元素;
3.
展示第三个列表的第一个元素;
4.
展示第一个列表的第二个元素;
5.
展示第二个列表的第二个元素;
6.
展示第三个列表的第二个元素;
7.
展示第一个列表的第三个元素;
8.
展示第二个列表的第三个元素;
9.
展示第三个列表的第三个元素;
合并后的迭代器的值将会存储在堆栈上下文的id
Action类代码:
publicclassMergeIteratorTagActionextendsActionSupport{
privateListmyList1;
priva
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 标签 说明