Struts2标签介绍

本文详细介绍了Struts2中的各种标签用法,包括property、set、push、bean、action等标签的功能及应用场景,并深入探讨了if/elseif/else流程控制、url生成、form表单等实用技巧。
摘要由CSDN通过智能技术生成

在jsp页面引入struts标签库:
<%@ taglib uri="/struts-tags" prefix=“s”%>

property:标签用于输出指定值:
<s:property value=“#name" default="a default value" />     
	default:可选属性, 如果需要输出的属性值为null,则显示该属性指定的值
	escape:可选属性,指定是否格式化HTML代码。
	value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值。

例子 : 
<s:property/>:输出栈顶的值输出: username=username_valueStack
<s:property value="%{'<hr> hr的使用'}"  escape="false"  />
输出:<hr> hr的使用
注:escape=“false”时,hr作为html标签使用


set: 标签用于将某个值放入指定范围。
	var:变量的名字,name,id和var表达的含义是一样的,name,id被var替代
	scope:指定变量被放置的范围,该属性可以接受application、session、request、 page或action。如果没有设置该属性,则默认放置在值栈的context中。
	value:赋给变量的值.如果没有设置该属性,则将ValueStack栈顶的值赋给变量。
注意:value的内容被当成OGNL解析,如果是字符串需要使用%{‘字符串’}
例子: 
<s:set value="#request.username"  var="xxx“ scope=“request” /><br>
<s:property value=“#request.xxx" /><br>    
<s:set value="#request.username"  var="xxx" scope="page" /><br>
<s:property value="#attr.xxx" /><br>
<s:set value="#request.username"  var="xxx" /><br>
<s:property value="xxx" /><br>
或者:<s:property value=“#xxx" /><br>     


push:将对象放入栈顶,不能放入其他范围,当标签结束,会从栈顶删除。
	value:要push到堆栈中的值 。
例子:     
<s:push value="#request.username">
   <s:property/>
</s:push><br>
测试删除: <s:property/>


bean标签:  实例化一个符合JavaBeans规范的class,标签体内可以包含几个	
	Param元素,用于调用setter方法给此class的属性赋值.
	name:要被实例化的class名字(必须符合JavaBeans规范) 
	var:赋给变量的值.放置在request作用域中如果没有设置该属性,则对象被放置到栈顶
例子:
<s:bean  name="com.my.bean.Person" var="myperson">
	<s:param name="name" value="%{'zhang'}"></s:param>
    <s:param name="age" value="34"></s:param>
</s:bean><br>
<s:property value="#myperson.name"/>


Action: 通过指定命名空间和action名称,该标签允许在jsp页面直接调用Action 
	name:action名字(不包括后缀,如.action) 
	namespace:action所在命名空间 
	executeResult:Action的result是否需要被执行,默认值是false不执行

例子: 
<package name="helloWord" namespace="/" extends="struts-default">
	<action name="hello" class="com.my.action.HelloAction">
		<result name="success">/success.jsp</result>
	</action>
</package>  

<s:action name="hello" namespace="/" executeResult="true" />


Iterator: 标签用于对集合进行迭代,这里的集合包含List、Set和数组
	value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
	var:可选属性,引用变量的名称.
	status:可选属性,该属性指定迭代时的IteratorStatus实例。
该实例包含如下几个方法:
 int getCount(),返回当前迭代了几个元素。
 int getIndex(),返回当前迭代元素的索引。
 boolean isEven(),返回当前被迭代元素的索引是否是偶数
 boolean isOdd(),返回当前被迭代元素的索引是否是奇数
 boolean isFirst(),返回当前被迭代元素是否是第一个元素。
 boolean isLast(),返回当前被迭代元素是否是最后一个元素。

例子:
   <s:iterator value="#request.allList“ var=“person”>
        <s:property value="name"/><br>
        <s:property value=“#person.name”/>
    </s:iterator>
   
   <s:iterator value="#request.allList" var="person" begin="2" end="7"  step="2">
        <s:property value="#person.name"/><s:property value="#person.age"/><br>
    </s:iterator>      


if/elseif/else  基本的流程控制.‘If’标签可单独使用也可以和‘Else If’标签和(或)一个多个‘Else’一起使用 

例子:
 <table border="1">  
       <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>


url: 该标签用于创建url,可以通过"param"标签提供request参数. 
	value:如果不提供就用当前action,使用value后缀必须加.action
	action:用来生成url的action,如果没有则使用value
	namespace :命名空间
	var:引用变量的名称.

例子:
使用action<br>
    <s:url action="ognlTagAction_test" namespace="/ognl" var="myurl">
         <s:param name="name" value="%{'zhang}"></s:param>
         <s:param name="id" value="12"></s:param>
    </s:url>
    注意:当使用url时,应配合使用struts2的a标签
    <s:a href="%{#url}" >xxxx</s:a><br>    
    使用value<br>
    <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>


form表单标签:
<s:form namespace="/" action="tagAction" method="post" enctype="multipart/form-data">
		<s:textfield name="username" label="用户名"></s:textfield>
		<s:password name="password" label="密码" showPassword="true"></s:password>
		<s:hidden name="token" value="这里是值"></s:hidden>
		
		<!-- 如果数据为list,显示的数据,与value的数据相同 -->
		<s:checkboxlist list="{'睡觉','继续睡觉','上课睡觉'}" name="love" label="爱好"></s:checkboxlist>
		
		<!-- 如果数据为map,显示map的value,标签value的值为map key  -->
		<s:radio list="#{'0':'男','1':'女' }" name="sex" label="性别"></s:radio>
		
		<s:select list="{'小班','中班','大班'}" name="xue" label="学历" headerKey="" headerValue="--请选择--"></s:select>
		
		<s:submit value="注册"></s:submit>
	</s:form>
	

Coding Diary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值