1.Java中的标签
在jsp页面中会用到的两种标签有:struts2与jstl。一定要区分两者的标签形式,下面从三种场景来区分下。
a.在jstl中使用struts2
<c:forEach var="ee" items="${requestScope.serviceList}" >
jstl:<c:out value="${ee.id}"></c:out>
el:${ee.id}
struts2: <s:property value="#attr.ee.id"/>
</c:forEach>
通过struts2标签取jstl标签的变量时,如果有设置scope,可以从scope中取值
如果没有就需要用#attr来取值
b.从jstl标签中获取值
<c:set var="ctime" value="${el.createtime}" scope="request"/>
<c:set var="ctime2" value="${el.createtime}" />
<s:property value="#request.ctime"/>
<s:property value="#attr.ctime2"/>
c.在struts2标签中使用jstl
<s:iterator value="#request.serviceList" id="bs">
struts2:<s:property value="#bs.keyid"/>
el:${bs.keyid}
jstl:<c:out value="${bs.keyid}"></c:out>
</s:iterator>
d.从struts2标签中取值
<!-- 数字类型 -->
<s:set name="pp" value="11"></s:set>
struts2:<s:property value="#pp"/>
el:${pp}
jstl:<c:out value="${pp}"></c:out>
<!-- 字符串类型 -->
<s:set name="pp2" value="'abc'" scope="request"></s:set>
struts2:<s:property value="#request.pp2"/>
el:${pp2}
jstl:<c:out value="${pp2}"></c:out>
2.Java中的表达式
在jsp页面中会用到的三种表达式有:EL表达式、 JSP脚本表达式以及ONGL表达式。一定要区分他们的书写形式。a.EL表达式
主要作用:获取数据、执行运算、获取 Web 开发常用对象。用于替换掉 Jsp 页面中的脚本表达式,以从各种类型的 Web 域中检索 Java 对象、获取数据。其表现形式为${ }.
b.JSP表达式
表现形式为<%= %>
C.OGNL表达式
OGNL表达式是Struts2中默认的表达式语言,只能应用于Strtus2中(Struts2的自定义标签中、struts.xml等)不能单独使用与JSP页面中。当应用于Struts2的自定义标签的属性值中时,其形式为%{表达式};当应用在 struts.xml中时,其形式为${表达式}方式。在自定义标签的属性值中使用%的原因是在JSP中使用$符号与EL相冲突。
语法:
%{name}取值栈中的值
%{#name}取值栈中Map中的值
%{#user.name}取值栈中Map中的值
#{'k':'v', 'k2':'v2'}定义一个Map
{'e1', 'e2'}定义一个List