struts2 常用标签总结
1. 使用Struts2的常用逻辑标签
1.1 property标签
- 功能说明
获取对象的属性值,目标对象默认位于ValueStack栈顶
- 标签属性
| 名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| value | no | Object | 对象的属性名称, 默认直接输出 ValueStack 栈顶对象 |
| default | no | String | 默认值,如果 value 为 null 则输出此值 |
| escape | no | Boolean | 是否进行html 转义,默认为 true |
| escapeJavaScript | no | Boolean | 是否进行JavaScript 转义,默认为 false |
eg: <s:property value="user.userName"/>
1.2 if-elseif-else标签
功能说明:
替代Java语法中的if/else
标签属性:
| 名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| test | yes | Boolean | 表达式,决定是否显示if/else if 标签体的内容 |
eg:
欢迎${user.name} ,
<s:if test="user.role == 'admin'">系统管理员</s:if>
<s:elseif test="user.role == 'member'">会员</s:elseif>
<s:else>游客</s:else>
1.3 iterator标签
功能说明:
替代Java语言中foreach的功能
标签属性:
| 名称 | 必选 | 类型 类型 | 说明 |
|---|---|---|---|
| value | true | Object | 被迭代的对象 |
| status | no | String | 迭代状态,IteratorStatus对象 |
PS:不需要写 status 的就会自动迭代,比如customers 这个集合,迭代的时候,直接写value =name 就是 customer 的name了
eg:
<s:iterator value="products">
<s:property value="name"/>,<s:property value="price"/>
<br />
</s:iterator>
2. 使用Struts2的常用UI标签
2.1 简单表单标签
| Struts2 Form UI Tag | html tag | 说明 |
|---|---|---|
| textfield | input type="text" | 文本输入框 |
| password | input type="password" | 密码输入框 |
| textarea | textarea | 多行文本输入框 |
| hidden | input type="hidden" | 隐藏域 |
| file | input type = "file" | 文件输入框 |
| submit | input type="submit" | 提交按钮 |
| reset | input type ="reset" | 重置按钮 |
| checkbox | input type="checkbox" | 复选框 |
2.2 select标签
功能说明:自带回显功能
生成select标签(含option)
标签属性:
| 名称 | 类型 | 说明 |
|---|---|---|
| list | 集合 | 指定option列表项 |
| listKey | String | 如果list元素是复合对象,指定 option value 对象属性 |
| listValue | String | 如果list 元素是复合对象,指定option text 对应属性 |
| emptyOption | Boolean | 是否添加空option |
| multiple | Boolean | 是否允许多选 |
| headerKey | String | 设置第一选项对应的 option value 对象属性 |
| headerValue | String | 设置第一选项对应的 option text 对象属性 |
PS:复合对象的意思是如果是集合会自动迭代。
eg : 集合 List<custoemr> customers 的下拉列表标签的使用
<s:select list="customers" name="customer.custId"
listKey="custId" listValue="custName"
headerKey="" headerValue="===请选择==="
style="WIDTH: 180px">
</s:select>
2.3 checkboxlist标签
功能说明: 自带回显功能
生成一组checkbox
标签属性:
| 名称 | 类型 | 说明 |
|---|---|---|
| list | 集合 | 指定option列表项 |
| listKey | String | 如果list 元素是复合对象,指定option value 对应属性 |
| listValue | String | 如果list 元素是复合对象,指定option text 对应属性 |
PS:复合对象的意思是如果是集合会自动迭代
eg:
<s:checkboxlist name="favors" list="products" listKey="id" listValue="name"/>
2.3.1 checkboxlist 和 checkbox 的区别
- checkbox 和 checkboxlist的用法首先需要搞清楚;
checkbox 适用的场景,例如是、否;有、无;符合、不符合;男、女等这样的语境;
checkboxlist 适用于多个,例如兴趣爱好:篮球、足球、乒乓球、玩游戏、听音乐等等;
2.4 radio 标签
功能说明: 自带回显功能的,需要给 name 属性是必须的
生成一组radio
标签属性:
| 名称 | 类型 | 说明 |
|---|---|---|
| list | 集合 | 指定option列表项 |
| listKey | String | 如果list 元素是复合对象,指定option value 对应属性 |
| listValue | String | 如果list 元素是复合对象,指定option text 对应属性 |
| name | String | name 属性是必须的,自带回显,还可以提交选中的值 |
eg:
<s:radio name="favorite" list="products" listKey="id" listValue="name"/>
3. 总结
使用struts2 标签的优缺点:
-
优点
- 自带回显功能,提升开发效率
- 简化代码
-
缺点
- 只能用于使用了 struts2 框架的代码,复用率不高
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
JavaScript学习之旅-12( 原创 )
在上一篇文章中,主要学习了JavaScript中的Date对象、正则表达式、Json、浏览器对象。这一篇我们主要深入学习探索JavaScript中的对象以及构造函数的说明和使用。 我们知道,在Java这门面向对象建模的计算机语言中,创建对象(新建一个Class,肯定是直接或者间接继承Object)、创建完毕之后接着使用对象(使用对象内部封装的函数完成开发需求,也就是new 对象,使用对象内的方法,也称对象的实例)是这们语言的灵魂和基础。不过,在JavaScript中,这个概念需要改一改。JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。实际上JavaScript对每个创建的对象都会设置一个原型去指向它的原型对象。 继承,是Java这门语言的特征之一,子类继承父类的目的是,子类可以吸收父类的数据属性和行为,并能扩展新的能力。那么,在JavaScript中,也有一种类似继承拓展的能力,我们首先定义一个对象: 定义一个“父类” 假设我现在想和Java一样,想实现类似继承的功能,这个该如何去做?这个时候,我们可以首先定义一个对象,然后使用关键字 _...
-
下一篇
业务代码的救星——Java对象转换框架MapStruct
介绍 在业务项目的开发中,我们经常需要将Java对象进行转换,比如从外部HSF服务得到的对象转换为本域的业务对象domain object,将domain object转为数据持久层的data object,将domain object 转换为DTO以便返回给外部调用方等。在转换时大部分属性都是相同的,只有少部分的不同,如果手工编写转换代码,会很繁琐。这时我们可以通过一些对象转换框架来更方便的做这件事情。 这样的对象转换框架有不少,比较有名的有ModelMapper和MapStruct。它们所使用的实现技术不同,ModelMapper是基于反射的,通过反射来查找实体对象的字段,并读取或写入值,这样的方式实现原理简单,但性能很差。与ModelMapper框架不同的是,MapStruct是基于编译阶段代码生成的,生成的转换代码在运行的时候跟一般的代码一样,没有额外的性能损失。本文重点介绍MapStruct。 原理 使用方法 1. Mapper声明 通过类似下面的代码声明一个Mapper,MapStruct会在编译时自动生成实现代码。除了基本的功能外,MapStruct提供很多高级的功能,全...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码