本文主要详细总结了struts2标签的用法和学习资料。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
我们先来看看Struts2标签的分类。然后分类总结。
因为控件标签应用广泛,所以放在前面。好了,先看控制标签。
一、控制标签,JSTL应该是我们大家都用的。其实Struts2的控制标签和那个差不多,主要是作为el表达式不能满足的东西的补充。下面简单介绍一下:
1.if … else if … else,用于控制所选输出的标签;
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
标题:如果标签测试/标题
/头
身体
!-在堆栈上下文中定义一个年龄属性,值为29-
s:set name='age' value='29'/
!-如果堆栈上下文中的年龄属性大于60-
学生:如果测试=' #年龄60 '
老年人
/s:如果
!-如果堆栈上下文中的年龄属性大于35-
学生:elseif test='#age35 '
中年男子
/s:elseif
!-如果堆栈上下文中的年龄属性大于15-
学生:elseif test='#age15 '
年轻人
/s:elseif
学生:否则
青少年
/s:否则
/body
/html
/span
2 .追加:用于将多个集合拼接成一个新集合;
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
使用标题标签s:append拼接集合和地图/标题。
/头
身体
!-使用append将列表和映射集拼接在一起。
新集合实际上是一个地图集合,它的名字是newList -
s:append var='newList '
s:param value='#{'Java':'ljh ',
C#':'lsz'}' /
s:param value='#{'0629 ',
'0404'}' /
/s:追加
表格边框='1 '宽度='280 '
!-使用迭代器迭代新列表集-
s:迭代器值='#newList '状态='st '
tr s:if test='#st.odd '
style=' background-color:# bbbbbb '/s:if
tds:属性值='key'//td
tds:属性值='value'//td
/tr
/s:迭代器
/表格
/body
/html
/span
3.generator:是一个字符串解析器,用来将一个字符串解析成一个集合;
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
使用title s:generator生成集合/标题。
/头
身体
表格边框='1 '宽度='240 '
!-使用generator标记将指定的字符串解析到迭代器集合中。
在generator标记中,结果列表集位于ValueStack的顶部
s:生成器值=''Java
,C#,
c ' '分隔符=','
!-不指定要迭代的集合,直接迭代ValueStack顶部的集合-
s:迭代器状态='st '
tr s:if test='#st.odd '
style=' background-color:# bbbbbb '/s:if
tds:属性//td
/tr
/s:迭代器
/s:生成器
/表格
/body
/html/span
4 .迭代器:是迭代器,用来迭代输出一个集合。这个比较用的是ha,前面都有,就不多举例了;
5.merge:也用于将多个集合拼接成一个新集合,但与append不同。追加是为了按顺序拼接集合。合并是第一集的第一,第二集的第一…第一集的第二,第二集的第二…;
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
使用title s:merge标签迭代地图/标题。
/头
身体
s:merge id='newList '
s:param value='#{'Java':'ljh ',
C#':'lsz'}' /
s:param value='#{'0629 ',
'0404'}' /
/s:合并
表格边框='1 '宽度='320 '
s:迭代器值='#newList '状态='st '
tr s:if test=' # ST . odd ' style=' background-color:# bbbbbb '/s:if
tds:属性值='key'//td
tds:属性值='value'//td
/tr
/s:迭代器
/表格
/body
/html/span
6 .排序:该标签用于对集合进行排序;
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
使用标题:排序对收集要素/标题进行排序
/头
身体
!-定义一个比较器实例-
s:bean var=' my comparator ' name=' org . ljh . app . util . my comparator '/
!-使用自定义排序规则对目标集进行排序-
s:sort source='{'Java '
,' C# '
,' C '
,' Ajax '
,' XML'} '
比较器='#mycomparator '
var='sortedList'/
页面范围的输出sortedList属性:br/
${pageScope.sortedList}
表格边框='1 '宽度='300 '
!-在page-的范围内迭代sortedList属性
s:iterator status=' ST ' value=' # attr . sorted list '
tr s:if test='#st.odd '
style=' background-color:# bbbbbb '/s:if
tds:属性//td
/tr
/s:迭代器
/表格
/body
/html/span
span style=' font-size:18px;'公共类MyComparator实现比较器
{
//确定两个元素大小的方法
公共int比较(对象元素1,对象元素2)
{
//根据元素字符串的长度确定大小
返回element1.toString()。长度()
- element2.toString()。长度();
}
}/span
7.subset:这个标签用来截取一个集合中的一些元素,形成一个新的子集。
span style=' font-size:18px;'html xmlns=' http://www . w3 . org/1999/XHTML '
头
使用s:subset标签截取集合元素/标题。
/头
身体
!-定义一个决策豆-
s:bean var=' my decider ' name=' org . ljh . app . util . my decider '/
!-截取目标集,并通过使用自定义决策器实例生成子集。
指定var属性并将生成的Itertor放入pageScope-
s:subset source=' { span style=' font-family:SimSun;' Java '/span/span pre name=' code ' class=' html ' span style=' font-size:18px;',' C# '
,' C '
,' Ajax '
,' XML '/span/pres span style=' font-size:18px;'} ' decoder=' # my decider ' var=' newList '/直接输出页面范围的new list属性:br/$ { page scope . new list } table border=' 1 ' width=' 240 '!-迭代页面范围中的newList属性-s:iterator status=' ST ' value=' # attr . new list ' tr s:if test=' # ST . odd ' style=' background-color:# bbbbbb '/s:if TDS:property//TD/tr/s
span style=' font-size:18px;'//用户定义的Decider类,实现SubsetIteratorFilter的接口。决定者
公共类MyDecider
实现SubsetIteratorFilter。决定者
{
//实现决策器接口必须实现的决策方法,
//此方法确定集合中的元素是否被选入子集。
公共布尔判定(对象元素)抛出异常
{
String str=(String)元素;
//如果集合元素(string)包含Java EE子串,则可以将其选入子集。
返回str . index of(' Java ')0;
}
}/span
二、数据标签,自我感知数据标签用的不多:
Action标签允许您在jsp页面中直接调用操作。调用操作时,可以指定要调用的操作的名称和命名空间。
如果executeResult参数的属性值为true,标签将包含该页面中操作的处理结果(查看资源)。
使用操作标签指定以下属性:
id:可选属性,作为该操作的引用ID
Name:必需的属性,指定调用动作。
Namespace:可选属性,指定此标签调用操作的名称空间。
ExecuteResult:可选属性,指定该页面中是否包含动作的处理结果。默认值为false,不包括在内。
s:actionname='actionTag!default ' execute result=' true ' namespace='/generic/dataTag '
param=' username ' value=' '/复制到操作属性
paramname='email' value=' '/
/s:动作
Bean实例化一个javabean,使用Param传入属性(get/set)
按名称实例化的javabean的实现类
当var是可选的时,允许将实例放入堆栈的上下文直接与var一起使用。
注意:在bean标记中创建的javabean实例位于栈顶,bean最终删除值栈,除非指定var,否则通过上下文访问值栈。
日期打印格式日期,指定日期和今天日期之间的时间差。
Formatart指定格式format date注意:你不希望nice同时指定,如果同时指定的话。格式被忽略。
nice是否指定了日期和当前日期的区别?
Name必需的格式化日期值
var对象被放入值堆栈中,并可以在日期结束时由该属性的值引用。
constant name=' sruts . custom . i18n . resources ' value=' application resources '/
s:datename=' # date ' for art=' yyyy MM DD day '/
debug标签:
用于辅助调试。页面上会生成超链接,以查看值堆栈和StackContext中的所有信息。
Id钙元素的参考id
包含:jsp或servlet包含在当前页面中。
包含该值的JSP或Servlet。
您可以指定多个param子选项卡来传递参数。
param标签:为其他标签提供参数
set参数的名称(set)value set参数的值。
使用
paramname='color '
param name=' color ' value=' ' color ' '/
Push:将一个值放在值堆栈的顶部。
Value required:指定要放入值堆栈的堆栈值!但是只在push标签中,一旦超过,就立刻把刚放进去的对象去掉。
用法:
s:pushvalue='#session.user '
s:propertyvalue='用户名'
s:propertyvalue='sex '
s:propertyvalue='emai '
/s:推送
Set:仅用于在指定范围内放置一个。
定义一个新变量。将现有值放入新变量。并把它放在指定的范围内。
值指定一个表达式,并将计算结果赋给变量。如果未指定value属性,则默认情况下将栈顶对象赋给变量。
Var指定此属性,并将值更改到值堆栈中。
指定要阻止的新变量的范围,可选应用程序,会话请求页面操作(默认)。如果指定为action,就放入请求,放入action值栈。
名称变量名
I8ntext标签支持国际信息。
I18n将资源包放入值栈名称资源属性名称指定资源包的基本名称。
Text从资源包中获取信息,title通过标题键获取消息。
通过i18n放入的资源包只能在标签体中访问。
文本可以单独使用。首先找到与调用动作类名相同基名的资源包,也就是说动作类所在的包中可以创建动作类名相同的资源文件,可以嵌套param来指定消息文本的参数,顺序对应参数的索引顺序。
s:i18n name=' application resources '
S:textname='title'/name资源属性名称id指定属性,文本内容不会输出,而是存储在值栈中。文本完成后,可以被属性的值引用。
/s:i18n
公共类TextTagAction扩展ActionSupport{} 《topic-21》
Url标记用于创建URL地址和定义param附加请求参数。
动作值指定生成的URL的动作和URL。前一个将被追加。行动。如果没有两个,则当前地址作为地址值。
指定url的可选定位点
Encode可以选择对指定的参数进行编码。不支持cookie重写url。支持会话。
escapeamp会被转义成amp吗?
将var链接值放入值堆栈
IncludeContext是否在URL地址中包含当前上下文。
无论includeParams是否包含请求参数,属性值都只能是none,getall。
方法指定使用操作的方法。
命名空间指定操作所属的命名空间。
Portletmode指定门户模式
Scheme指定url使用的协议。
属性标签,用于输出值堆栈中对象的属性值。
值指定如果没有要输出的对象属性,将输出堆栈的顶部。
可选的defaultvalue为null以输出更改后的值。
escape是否在内容中独占输出html?
三、表单标签,这是表单下Struts2提供的标签,用于界面显示。其实用的比较少。一般情况下,我们会用easy-ui、dwz等专门做接口的框架来代替。其实简单来说,就像HTML中的各种标签,这里就不赘述了。
四、非标单标签,主要用于生成一些非表单的可视化元素,比如标签页,输出HTML页面的树形结构等。当然,它也用于显示封装在动作中的信息。简单介绍一下:
看一个简单的componet标记:
span style=' font-size:18px;'超文本标记语言
头
使用s:组件标签/标题。
/头
身体
使用h3 s:组件标签/h3
使用默认主题(xhtml),默认主题目录(模板)br/
使用mytemplate.jsp作为视图组件。
s:组件模板='mytemplate.jsp '
s:param name=' list ' value=' { ' Java '
,' C# '
,C '}'/
/s:组件
人力资源/
使用自定义主题来自定义主题目录br/
使用myAnotherTemplate.jsp作为视图组件。
s:组件
templateDir='myTemplateDir '
theme='myTheme '
template=' myanothertemplate . JSP '
s:param name='list' value='
{'Java '
,' C# '
,C '}'/
/s:组件
/body
/html
/span
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。