<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>