Struts2标签库
来源:互联网 发布:生活用品的淘宝店名 编辑:程序博客网 时间:2024/06/16 12:16
MVC框架及Struts2介绍
Struts2核心
Struts2拦截器
Struts2值栈和OGNL表达式
Struts2标签库
1 常用标签
在普通的html标签中可以嵌套struts2标签,但struts2标签不能互相嵌套。使用标签时需要导入标签库:
<%@ taglib prefix="s" uri="/struts-tags" %>
1.1 debug标签
<s:debug />
通常用于调试,可以显示当前值栈中的数据。
1.2 <s:property>标签
<s:property>标签用于输出指定值。
<s:property value="name" default="default value" />
value:需要输出的属性值,如果没有指定该属性,默认输出ValueStack栈顶的值,对象栈中使用”属性名”,ContextMap中使用”#key”;
default:如果需要输出的属性值为null,则显示该属性指定的默认值;
escape:表示不管;
escapeHtml:默认值为true,表示不管html;
escapeJavaScript:默认值为false,表示要解析js;
1.3 <s:a>标签
<s:a>为超链接,使用action属性,如果项目有contextPath的时候,会自动加上。
<!-- 有contextPath情况下根据id删除 --><a href="${pageContext.request.contextPath}/tag_delete?userId=${userId}">普通超链接删除</a><s:a action="tag_delete?userId=%{#userId}/>">struts超链接</s:a>
使用%{…}把普通字符串转换为OGNL表达式。
1.4 <s:iterator>标签
<s:iterator>类似于jstl中的foreach标签,用于对集合List、set和数组遍历。
<s:iterator value="#List" var="e" />
value:被迭代的集合或数组,如果没有设置该属性,则使用ValueStack栈顶的集合;
var:引用变量的名称;
status:该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素;
int getIndex(),返回当前迭代元素的索引;
boolean isEven(),返回当前被迭代元素的索引是否是偶数;
boolean isOdd(),返回当前被迭代元素的索引是否是奇数;
boolean isFirst(),返回当前被迭代元素是否是第一个元素;
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
迭代userList集合
<table> <tr> <th>Id</th> <th>Name</th> </tr> <s:iterator value="#userList" var="user"> <tr> <td><s:property value="id" /></td> <td><s:property value="name" /></td> </tr> </s:iterator></table>
value=”id”,可以直接使用user中的属性名获取值(推荐),每次循环都会把对象压栈,循环完成后弹栈,所以可以直接用属性名。
<td><s:property value="#user.id" /></td><td><s:property value="#user.name" /></td>
value=”#user.id”,可以通过#对象.属性名获取值,每次循环都要把user放入值栈的map中所以要加#。
<td>${id}</td><td>${name}</td>
${id},直接使用EL表达式获取值,但如果作用域中有重名就会出现问题。
1.5 if/else if/else
if/else if/else用于基本的流程控制,if标签可单独使用也可以和else if标签、一个或多个else一起使用。
<table> <s:iterator value="allList" var="person"> <tr> <td><s:property value="#person.name"/></td> <td><s:property value="#person.age"/></td> <td> <s:if test="#person.age<24">少年</s:if> <s:elseif test="#person.age<26">中年</s:elseif> <s:else>老年</s:else> </td> </tr> </s:iterator> </table>
1.6 <s:url>标签
<s:url>标签用于创建url,可以通过”param”标签提供request参数。
value:如果不提供就用当前action,使用value后缀必须加.action;
action:用来生成url的action,如果没有则使用value;
namespace:命名空间;
var:引用变量的名称。
<!-- 使用action --><s:url action="ognlTagAction_test" namespace="/ognl" var="myurl"> <s:param name="name" value="%{'张老师'}"></s:param> <s:param name="id" value="12"></s:param></s:url><s:a href="%{#myurl}">xxxx</s:a>
<!-- 使用value --><s:url value="ognlTagAction_test.action" namespace="/ognl" var="myurl"> <s:param name="id" value="12"></s:param> <s:param name="cnname" value="%{'zhang'}"></s:param></s:url><s:a href="%{#myurl}">xxxx</s:a>
当使用url时,应配合使用struts2的a标签。
2 表单标签
表单标签将在HTML文档里被呈现为一个表单元素,表单标签的优点:
1.表单回显;
2.对页面进行布局和排版(不用);
标签的属性可以被赋值为一个静态的值或一个OGNL表达式。如果在赋值时使用了一个OGNL表达式并把它用%{}括起来,这个表达式将会被求值。
%{}表示把OGNL表达式转换成字符串,或者把字符串转换成OGNL表达式。
struts2表单标签的value属性,必须用%{}进行设值。
表单标签公共属性
2.1 form标签
作用:用来呈现html语言中的表单元素
属性
默认情况下form标签将被呈现为一个表格形式的HTML表单,嵌套在form标签里的输入字段将被呈现为一个表格行。每个表格行由两个字段组成,一个对应着行标,一个对应着输入元素。提交按钮将被呈现为一个横跨两列单元格的行。
去掉form中的默认样式:
方式一:struts.xml中使用常量去掉所有form的样式
<constant name="struts.ui.theme" value="simple"></constant>\
方式二:form中配置去掉某一个form的样式
<s:form action="#" method="post" theme="simple">
2.2 textfield、password、hidden标签
textfield标签呈现为一个输入文本字段
password标签呈现为一个口令字段
hidden标签呈现为一个不可见字段
属性
password标签扩展自textfield标签,多了showPassword属性,该属性是布尔型,默认值为false,它决定着在表单回显时是否显示输入的密码,true表示显示密码。
用户名:<s:textfield name="user.name"></s:textfield>密码:<s:password name="user.password" showPassword="true"></s:password>
2.3 submit标签
submit标签将呈现为一个提交按钮,根据其type属性的值,可以提供3种呈现效果:
input: <input type="submit" value="提交" …/>button: <input type="button" value="确定" …/>image: <input type="image" value="图片" src="XX.jpg" …/>
属性
2.4 reset标签
reset标签将呈现为一个重置按钮,根据其type属性的值,可以提供2种呈现效果:
input: <input type="reset" value="重置" …/>button: <input type="button" value="重置按键" …/>
属性
2.5 textarea标签
textarea标签将呈现为一个HTML文本域元素。
属性
2.6 checkboxlist标签
checkboxlist标签将呈现一组多选框。
属性
集合为List
<s:checkboxlist name="list" list="{'Java','.Net','RoR','PHP'}" value="{'Java','.Net'}" /><!-- 生成的html代码 --><input type="checkbox" name="list" value="Java" checked="checked" /><label>Java</label><input type="checkbox" name="list" value=".Net" checked="checked" /><label>.Net</label><input type="checkbox" name="list" value="RoR" /><label>RoR</label><input type="checkbox" name="list" value="PHP" /><label>PHP</label>
集合为Map
<s:checkboxlist name="map" list="#{1:'Java',2:'.Net',3:'RoR',4:'PHP'}" listKey="key" listValue="value" value="{1,2,3}" /><!-- 生成的html代码 --><input type="checkbox" name="map" value="1" checked="checked" /><label>Java</label><input type="checkbox" name="map" value="2" checked="checked" /><label>.Net</label><input type="checkbox" name="map" value="3" checked="checked"/><label>RoR</label><input type="checkbox" name="map" value="4" /><label>PHP</label>
集合中存放着JavaBean
<% Person person1 = new Person(1,"第一个"); Person person2 = new Person(2,"第二个"); List<Person> list = new ArrayList<Person>(); list.add(person1); list.add(person2); request.setAttribute("persons", list); %><!-- id和name为Person的属性 --><s:checkboxlist name="beans" list="#request.persons" listKey="id" listValue="name" /><!-- 生成的html代码 --><input type="checkbox" name="beans" value="1" /><label>第一个</label><input type="checkbox" name="beans" value="2" /><label>第二个</label>
2.7 radio标签
标签将呈现为一组单选按钮, 单选按钮的个数与通过该标签的list属性提供的选项的个数相同。使用 radio 标签实现 “多选一”, 对于 “真/假” 则该使用 checkbox 标签。
属性
设置默认选中
方式一:通过js代码实现
<script type="text/javascript"> document.getElementsByName('user.sex')[0].checked=true;</script>
方式二:通过添加value属性
<s:radio name="user.sex" list="%{#{'1':'男','0':'女'}}" value="1" theme="simple" />如果默认选中,回显就无法起作用。
集合为List
<s:radio name="list" list="{'Java','.Net'}" value="'Java'"/><!-- 生成如下html代码 --><input type="radio" name="list" checked="checked" value="Java"/><label>Java</label><input type="radio" name="list" value=".Net"/><label>.Net</label>
集合为Map
<s:radio name="map" list="#{1:'Java',2:'.Net',3:'RoR',4:'PHP'}" listKey="key" listValue="value“ value="1"/><!-- 生成如下html代码 --><input type="radio" name="map" id="map1" value="1"/><label for="map1">Java</label><input type="radio" name="map" id="map2" value="2"/><label for="map2">.Net</label><input type="radio" name="map" id="map3" value="3"/><label for="map3">RoR</label><input type="radio" name="map" id="map4" value="4"/><label for="map4">PHP</label>
集合中存放着JavaBean
<% Person person1 = new Person(1,"第一个"); Person person2 = new Person(2,"第二个"); List<Person> list = new ArrayList<Person>(); list.add(person1); list.add(person2); request.setAttribute("persons", list); %><s:radio name="beans" list="#request.persons" listKey="personid" listValue="name"/><!-- 生成如下html代码 --><input type="radio" name="beans" id="beans1" value="1"/><label>第一个</label><input type="radio" name="beans" id="beans2" value="2"/><label>第二个</label>
2.8 select标签
标签将呈现一个select元素。
属性
集合为List
<s:select name="list" list="{'Java','.Net'}" value="'Java'"/><!-- 生成如下html代码 --><select name="list" id="list"> <option value="Java" selected="selected">Java</option> <option value=".Net">.Net</option></select>
集合为Map
<s:select name="map" list="#{1:'Java',2:'.Net',3:'RoR',4:'PHP'}" listKey="key" listValue="value" value="1"/><!-- 生成如下html代码 --><select name="map" id="map"> <option value="1" selected="selected">Java</option> <option value="2">.Net</option> <option value="3">RoR</option> <option value="4">PHP车</option></select>
集合中存放着JavaBean
<!-- listKey传递到后台的值 listValue界面上显示的内容 headerKey默认的值 headerValue默认显示内容--><s:select name="beans" list="#request.persons" listKey="personid" listValue="name" headerKey="-1" headerValue="--请选择--"/><!-- 生成如下html代码 --><select name="beans" id="beans"> <option value="-1" selected="selected">--请选择--</option> <option value="1">第一个</option> <option value="2">第二个</option></select>
3 Struts2自动回显
<s:form name="form1" action="userAction_save"> 用户名:<s:textfield name="username"/><br> 电话:<s:textfield name="tel" /><br> 描述:<s:textfield name="des" /><br> <s:submit type="submit" value="保存"></s:submit></s:form>
<s:textfield name=”username”/>相当于<input type=”text” name=”username” value=”zhang”>。
当struts2解析该标签时,获取name属性的值username,以username为条件到对象栈中查找PropertyName=”username”的属性,如果找到了,获取该属性的值,该属性的值就是的值,如果没有找到了<s:textfield name=”username”/>的值=” “。
- Struts2标签库常用标签
- Struts2的标签库
- struts2标签库总结
- struts2 标签库 介绍
- Struts2 标签库
- struts2标签库
- struts2标签库总结
- Struts2 标签库
- struts2标签库
- Struts2标签库
- Struts2 标签库 [Tablib]
- struts2标签库使用
- Struts2标签库
- struts2标签库
- struts2标签库
- struts2 标签库 介绍
- struts2标签库
- Struts2 标签库
- OpenCV-图像模糊,梯度、形态学变换
- 【java基础:net】基于TCP的文本文件上传Demonstration
- 线程锁
- linux服务mariadb
- sql server 中的隐形符号(不是空格的空字符)
- Struts2标签库
- 如何让自己的Android studio更加的个性化--Code Templates、SexyEditor
- PANDAS 数据合并与重塑(concat篇)
- leetcode 56. Merge Intervals
- Spark之RDD的Transformation操作
- HBase体系结构剖析--上
- Spring中bean注入初始化方式—通过注解@Configuration @bean
- NOIP 2017 普及组 成绩 score
- group by分组后获得每组中时间最大的那条记录