<s:property />标签:
用于访问值栈中的各类对象,并可以直接访问action里的方法,对象的静态属性和静态方法,例如Math.PI和Math.sin()。
访问值栈中的普通属性:
userName = <s:property value="userName"/>
访问值栈中的对象属性:
<s:property value="user.userName"/>
(对于以上两种基本取值方式,使用el表达式更便利)
访问值栈中普通属性的普通方法:
<s:property value="user.userName.length()"/>
访问值栈中的普通方法:
<s:property value="test()"/>
访问值栈中对象属性的方法:
<s:property value="user.login()"/>
访问静态属性:
<s:property value="@com.struts.bean.Student@staticValue"/>
访问静态方法:
<s:property value="@com.struts.bean.Student@doStatic()"/>
访问Java提供的静态方法:
<s:property value="@@max(10,1)"/>
new构造方法:
<s:property value="new com.struts.bean.Users('abc','123').userName"/>
取对象中list集合:
<s:property value="student.studentList"/>
取list下的单个元素:
<s:property value="student.studentList[1]"/>
取list下的某个属性的特定值:
<s:property value="student.studentList[1].{userName}"/>
取Map集合:
studentMap = <s:property value="student.studentMap"/>
Map下的所有Key/value:
key = <s:property value="student.studentMap.keys"/>
values = <s:property value="student.studentMap.Values"/>
过滤:
<s:property value="student.studentList.{?#this.userName==\"user3\"}.{userName}"/>
[]的用法:
<s:property value="[0].user.passWord"/>
(这里[0]是对值栈对象 ValueStack进行操作,源码在CompoundRoot中,向值栈中存放的数据进行取值,[0]取第一个栈顶,规则按后进先出)
<s:url/>标签:
创建一个URL字符串,可用作提交
创建一个URL字符串,手动设置参数:
<s:url value="/getUser" var="url1">
<s:param name="userId" value="100"></s:param>
</s:url>
创建一个URL字符串,获取值栈中的值设置为参数,其中userName为值栈中的具体值:
<s:url value="/getUser" var="url2">
<s:param name="name" value="userName"></s:param>
</s:url>
创建一个URL字符串,若设置的value属性是自定义而不是从值栈中取,则需要添加单引号,否则会进入Ognl解析,即使值栈中没有该属性,也会解析:
<s:url value="/getUser" var="url3">
<s:param name="userName" value="'userName'"></s:param>
</s:url>
创建一个action请求:
<s:url action="UserAction" namespace="/test" method="label" var="url4"></s:url>