流水账
BlogJava
首页
新随笔
联系
聚合
管理
随笔-0 评论-5 文章-26 trackbacks-0
struts2中非表单标签的使用
非表单标签主要用于在页面生成一些非表单的可视化元素,例如Tab页面,输出HTML页面的树形结构等。当然,非表单标签也包含在页面显示Action里封装的信息。非表单标签主要有如下几个:
a:生成一个超级连接(link)
actionerror:如果Action实例的getActionErrors()方法返回不为null,则该标签负责输出该方法返回的系列错误。
actionmessage :如果Action实例的getActionMessages()方法返回不为null,则该标签负责输出该方法返回的系列消息。
component:使用此标签可以生成一个自定义组件。
div :此标签负责生成一个div片段。
fielderror:如果Action实例存在表单域的类型转换错误、校验错误,该标签负责输出这些错误提示。
tabbedPanel:生成HTML页面的Tab页。
tree:生成一个树形结构。
treenode:生成树形结构的节点。
下面,使用上面列出的一些十分常用的非表单标签。
1. actionerror和actionmessage标签
这两个标签用法完全一样,作用也几乎完全一样,都是负责输出Action实例里封装的信息,区别是actionerror标签负责输出Action实例的getActionError()方法的返回值,而actionmessage标签负责输出Action实例的getActionMessage()方法的返回值。对于这两个标签而言,几乎没有自己的专有属性,故使用起来非常简单。 下面是本示例应用中的Action类,这个Action类仅仅添加了两条ActionError和ActionMessage,并没有做过多处理,代码:
public
class
DemoAction
extends
ActionSupport
{
public
String execute()
{
//
添加两条Error信息
addActionError(
"
第一条错误消息!
"
);
addActionError(
"
第二条错误消息!
"
);
//
添加两条普通信息
addActionMessage(
"
第一条普通消息!
"
);
addActionMessage(
"
第二条普通消息!
"
);
return
SUCCESS;
}
}
上面的Action的execute方法仅仅在添加了四条消息后,直接返回success字符串,success字符串对应的JSP页面中使用<s:actionerrror/>和<s:actionmessage/>来输出ActionError和ActionMessage信息。下面是该JSP页面中使用这两个标签的示例代码:
<!--
输出getActionError()方法返回值
-->
<
s:actionerror
/>
<!--
输出getActionMessage()方法返回值
-->
<
s:actionmessage
/>
在另一个页面中使用<s:action .../>标签来调用上面的Action,调用Action的标签代码片段如下:
<s:action name="demo" executeResult="true"/>
从上面的<s:action .../>标签中可以看出,上面代码将demoAction的处理结果包含到本页面中来。
2. component标签
component标签用于使用自己的自定义组件,这是一个非常灵活的用法,如果经常需要使用某个效果片段,就可以考虑将这个效果片段定义成一个自定义组件,然后在页面中使用component标签来使用该自定义组件。因为使用自定义组件还是基于主题、模板管理的,因此在使用component标签时,常常需要指定如下三个属性:
theme:自定义组件所使用的主题,如果不指定该属性,默认使用xhtml主题。
templateDir:指定自定义组件的主题目录,如果不指定,默认使用系统的主题目录,即template目录。
template:指定自定义组件所使用的模板。
除此之外,还可以在cmponent标签内使用param子标签,子标签表示向该标签模板中传入额外的参数。如果希望在模板中取得该参数,总是采用如下形式:$parameters.paramname,或者$parameters['paramname']。
提示:自定义的模板文件可以采用FreeMarker、JSP和Velocity三种技术来书写。
看下面的JSP页面,该页面多次使用了<s:component .../>标签来使用自定义组件,下面是该页面使用<s:component .../>标签的代码片段:
使用自定义主题,自定义主题目录
<
br
>
从Web应用根路径下加载模板,使用ftl模板。
<
s:component
theme
="customTheme"
templateDir
="customTemplateDir"
template
="ftlCustomTemplate"
>
<
s:param
name
="list"
value
="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}"
/>
</
s:component
>
<
hr
/>
使用自定义主题,自定义主题目录
<
br
>
从Web应用根路径下加载模板,使用JSP模板。
<
s:component
theme
="customTheme"
templateDir
="customTemplateDir"
template
="jspCustomTemplate.jsp"
>
<
s:param
name
="list"
value
="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}"
/>
</
s:component
>
<
hr
/>
使用默认主题(xhtml),默认主题目录(template)
<
br
>
从Web应用中加载模板,使用JSP模板。
<
s:component
template
="mytemplate.jsp"
>
<
s:param
name
="list"
value
="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}"
/>
</
s:component
>
<
hr
/>
使用自定义主题,自定义主题目录
<
br
>
从/WEB-INF/classes路径下加载模板,使用ftl模板。
<
s:component
theme
="myTheme"
templateDir
="myTemplateDir"
template
="myAnotherTemplate"
>
<
s:param
name
="list"
value
="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , '基于J2EE的Ajax宝典'}"
/>
</
s:component
>
在上面页面中使用了2个FreeMarker模板,这两个FreeMarker模板都使用了FreeMarker标签。除此之外,本页面中还使用了两个JSP模板,这两个JSP页面只是加载的位置不同,两个模板的代码是相同的,下面是JSP模板的代码:
<!--
设置页面编码
-->
<%
@ page contentType
=
"
text/html; charset=GBK
"
language
=
"
java
"
%>
<%
@taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<
div
style
="background-color:#eeeeee;"
>
<
b
>
JSP自定义模板
<
br
>
请选择您喜欢的图书
<
br
></
b
>
<!--
使用select标签迭代输出list参数所穿过来的集合
-->
<
s:select
list
="parameters.list"
/>
</
div
>
3. tree和treenode初步
这里仅仅介绍tree和treenode标签的初步用法,我们可以通过tree和treenode在页面中生成一个树形结构。其中tree生成一个树形结构,treenode生成一个树节点。
对于tree和treenode标签,都可指定一个label属性,该属性指定了树、或者树节点的标题。看如下代码:
<!--
使用s:tree生成树
-->
<
s:tree
label
="计算机图书"
id
="book"
theme
="ajax"
showRootGrid
="true"
showGrid
="true"
treeSelectedTopic
="treeSelected"
>
<!--
每个treenode生成一个树节点
-->
<
s:treenode
theme
="ajax"
label
="李刚"
id
="yeeku"
>
<!--
treenode生成下一级的子节点
-->
<
s:treenode
theme
="ajax"
label
="Spring2.0宝典"
id
="spring"
/>
<
s:treenode
theme
="ajax"
label
="轻量级J2EE企业应用实战"
id
="lightweight"
/>
<
s:treenode
theme
="ajax"
label
="基于J2EE的Ajax宝典"
id
="ajax"
/>
</
s:treenode
>
<
s:treenode
theme
="ajax"
label
="David"
id
="David"
>
<
s:treenode
theme
="ajax"
label
="JavaScript: The Definitive Guide"
id
="javascript"
/>
</
s:treenode
>
<
s:treenode
theme
="ajax"
label
="Johnson"
id
="Johnson"
>
<
s:treenode
theme
="ajax"
label
="Expert One-on-One J2EE Design and Development"
id
="j2ee"
/>
</
s:treenode
>
</
s:tree
>
从上面代码中可以看出,所有的treenode标签必须放在tree标签内部,或者放在treenode标签的内部。当放在tree标签的内部时,该节点是该树的根节点,当放在treenode标签的内部时,它是该节点的子节点。
posted on 2009-05-13 15:10
L.J.
阅读(407)
评论(0)
编辑
收藏
所属分类:
Struts2
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
optiontransferselect标签属性
Struts2上传任意多个文件
Struts2的文件上传
struts2中文件上传过滤
在Struts 2.0中国际化(i18n)您的应用程序
Struts2常用的Ajax标签
struts2中非表单标签的使用
Struts2中的Result类型应用(action...etc跳转)
Strus 2的表单标签的使用
Struts2在OGNL基础上的增强
<
2024年6月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
EXT(3)
Hibernate(4)
J2EE(2)
Struts2(15)
Web(2)
文章档案
2009年5月 (26)
相册
我家十八
真的有外星人吗
外星人
搜索
最新评论
1. re: Struts2常用的Ajax标签[未登录]
挺不错的实用比较
--小七
2. re: struts2中文件上传过滤
123
--1233
3. re: Struts2常用的Ajax标签
dsf
--fdg
4. re: Struts2常用的Ajax标签[未登录]
@张晓滔
这博客的时间是2009年的了
--XXX
5. re: Struts2常用的Ajax标签
这是什么版本的啊,怎么我们现在用的那个导入的标签都不是啊,你导入的是Stuts 2 的标签,不是那个Ajax的标签啊
--张晓滔