struts2的标签:
<!-- 后台定义了 public List list 以及 list 的get set方法,没request.setattribute方法
--前台调用list的时候,value不需要加# var属性相当于list里的对象 status为状态属性
--property 的value书写要求:如果value的的值只是一个字符串,则可以不加#,格式如:ll。
--如果为一个实体,需要加#,书写格式如:#ll
-->
<s:iterator value="list" var="ll" status="counts">
<s:property value="#ll"/>
</s:iterator>
<!-- 后台定义了 public Map map 以及 map 的get set方法,没request.setattribute方法
--前台调用map的时候,value不需要加#
--property 的value书写两种格式,如下
-->
<s:iterator value="map" var ="mm" status="counts">
<!-- 可以这样:
<s:property value="key"/>:<s:property value="value"/></br>
-->
<s:property value="#mm.key"/>:<s:property value="#mm.value"/>
</s:iterator></br>
<!-- %的作用就是 将字符串list翻译成ognl可以解析的代码-->
<s:property value="%{list}"/></br>
<!-- 后台的格式是 request.setAttribute("semesterList",semesterList)
--前台调用的时候,value值要加上#request.semesterList ,
--遍历体里面的s:property标签的value 的值前面依然要加#
-->
<s:iterator value="#request.semesterList" var="semester" status="counts">
${semester.seName} | property方式:<s:property value="#semester.seName"/>
</br>
</s:iterator>
</br>
<!-- 获取semesterList第一个元素的的子元素seName ,以下两种方式。
--因为arraylist是通过数组放方式存储数据的,所以第一种方式通过#request.semesterList[0]可以访问到一个元素
--从第二种方式可以看出 在value值种可以访问对象的方法-->
<s:property value="#request.semesterList[0].seName"/>
<!--
<s:property value="#request.semesterList.get(0).seName"/>
-->
</br>
<!-- 访问map所value值 -->
<s:property value="map.values()"/>
</br>
<!-- 这里注意 #request.semId 可以访问两种 :后台设置为request.setAttribute("semId",semId),或者semId的get set方法。
--但是如果后台设置了session.setAttribute("semId",semId),则前台的value只能为为#session.semId,同理application。
-->
<s:property value="#reqeust.semId"/>
//最后注意只有在struts2标签体中,才能解析 #,%
el表达式:
范例
说明
${pageScope.username}
取出Page范围的username变量
${requestScope.username}
取出Request范围的username变量
${sessionScope.username}
取出Session范围的username变量
${applicationScope.username}
取出Application范围的username变量
pageContext
我们可以使用 ${pageContext}来取得其他关用户要求或页面的详细信息。下表列出了几个比较常用的部分
Expression
说明
${pageContext.request.queryString}
取得请求的参数字符串
${pageContext.request.requestURL}
取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。
${pageContext.request.contextPath}
服务的webapplication的名称
${pageContext.request.method}
取得HTTP的方法(GET、POST)
${pageContext.request.protocol}
取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser}
取得用户名称
${pageContext.request.remoteAddr}
取得用户的IP地址
${pageContext.session.new}
判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用
${pageContext.session.id}
取得session的ID
${pageContext.servletContext.serverInfo}
取得主机端的服务信息
el和ognl表达式配合使用:
通常见到
<!-- request,session,application范围的,访问格式:${request.XXX}/${session.XXX}/${application.XXX}
---如果有get set方法,访问格式${XXX}.
---如果在ognl的循环体里面,即使外对象(如semesterList)在request,session,application范围,里面可以直接这样访问:${semester.seName}
-->
<s:iterator value="#request.semesterList" var="semester" status="counts">
el表达式:${semester.seName} | ognl方式:<s:property value="#semester.seName"/>
</br>
</s:iterator>
</br>
<s:if test="#parameters.name[0]=='1'">
<s:if test="#parameters.roleCode[0]=='fenguanxiaolingdao' || #parameters.roleCode[0]=='fadingdaibiaoren'">
el表达式重用于展示结果