您的位置:首页 > 编程语言 > Java开发

Struts2 标签的使用

2016-05-28 17:17 471 查看
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Struts-Tags学习</title>
</head>
<body>
<ol>
<li>property: <s:property value="username" /></li>

<!-- value中的字符串,struts会默认将其解析为OGNL表达式,下列中,我们给username加上单引号后
返回值就是username,而上例中返回的则是username的取值u -->
<li>property 取值为字符串: <s:property value="'username'" /></li>
<li>property 设定默认值: <s:property value="admin" default="管理员" /></li>
<!-- escape的默认值为true,也就是转意的意思 -->
<li>property 设定HTML: <s:property value="'<hr/>'" escape="false" />
</li>
<hr />

<!-- set中value的类型是Object,也就是说value="username"里面的username是OGNL表达式,value的值是u; -->
<li>set 设定adminName值(默认为request 和 ActionContext): <s:set
var="adminName" value="username" />
</li>

<li>set 从request取值: <s:property value="#request.adminName" />
</li>
<li>set 从ActionContext取值: <s:property value="#adminName" />
</li>

<li>set 设定范围: <s:set name="adminPassword" value="password"
scope="page" />
</li>
<li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword")%></li>
<!-- 也可以使用EL表达式来获取值 -->
<li>set 从相应范围取值: ${pageScope.adminPassword}</li>

<li>set 设定var,范围为ActionContext: <s:set var="adminPassword"
value="password" scope="session" />
</li>
<!-- 下例中取不到值!! -->
<li>set 使用#取值: <s:property value="#adminPassword" /></li>
<li>set 从相应范围取值: <s:property value="#session.adminPassword" /></li>

<%-- <s:debug></s:debug> --%>
<hr />

<%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
<li>
push:<s:push value="#myDog">
<s:property value="name"/>
</s:push>
</li>
<li>push: <s:property value="name"/></li>
--%>

<!-- jsp的bean动作标签和Struts2bean标签的对比!! -->
<jsp:useBean id="dog" class="com.bjsxt.struts2.tags.Dog" />

4000
<jsp:setProperty name="dog" property="name" value="pp" />
<jsp:getProperty name="dog" property="name" />

<hr />

<li>bean 定义bean,并使用param来设定新的属性值: <s:bean
name="com.bjsxt.struts2.tags.Dog">
<s:param name="name" value="'pp'"></s:param>
<s:property value="name" />
<%-- <s:debug></s:debug> --%>
<!-- 在此处使用debug会看到值栈的栈顶会有dog对象 -->
</s:bean> <s:debug></s:debug> <!-- 此处使用debug就看不到dog对象了,如果还想看到其对象,必须设置var将其压入stack context中 -->
</li>

<!-- 如果想在Stack Context中看到bean的内容,必须设置var=""; -->
<li>bean 查看debug情况: <s:bean name="com.bjsxt.struts2.tags.Dog"
var="myDog">
<!-- 注意value的值类型是Object,所以要加上单引号将其转化为字符串形式 -->
<s:param name="name" value="'oudy'"></s:param>
</s:bean> 拿出值: <s:property value="#myDog.name" /></li>
<hr />

<%-- 		<li>include _include1.html 包含静态英文文件
<s:include value="/_include1.html"></s:include>
</li>

<li>include _include2.html 包含静态中文文件
<s:include value="/_include2.html"></s:include>
</li> --%>

<li>include _include1.html 包含静态英文文件,说明%用法 <s:set var="incPage"
value="%{'/_include1.html'}" /> <!-- s:include中的value值为字符串类型,所以要取值的话,需要使用百分号将其强制转为OGNL表达式!! -->
<!-- 而s:property中的value值为Object类型的,其默认为OGNL表达式!! --> <s:include
value="%{#incPage}"></s:include> <!-- 使用百分号表示强制将其解析为OGNL表达式!! --></li>

<hr />

<li>if elseif else: age = <s:property value="#parameters.age[0]" />
<br /> <s:set var="age" value="#parameters.age[0]" />
<s:if test="#age < 0"> wrong age!</s:if>
<s:elseif test="#age < 20">too young!</s:elseif>
<s:else>yeah!</s:else><br />
<s:if test="#parameters.aaa == null">null</s:if>
</li>

<!-- 在JSTL标签库中用choose when 来代替if else if  -->
<%-- 		<!-- choose标签!! if elseif -->
<c:set var="score" value="${param.score }" />
<c:choose>
<c:when test="${score>100||score<0}">错误的分数:${score}</c:when>
<c:when test="${score>=90 }">A</c:when>
<c:when test="${score>=80 }">B</c:when>
<c:when test="${score>=70 }">C</c:when>
<c:when test="${score>=60 }">D</c:when>
<c:otherwise>E</c:otherwise>
</c:choose>
--%>
<hr />

<li>遍历集合:<br /> <s:iterator value="{1, 2, 3}">
<s:property /> |       <!-- 会自动将其列出!! -->
</s:iterator></li>

<li>自定义变量:<br /> <s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
<s:property value="#x.toUpperCase()" /> |
</s:iterator></li>

<!-- 使用JSTL和EL的foreach完成迭代!! -->
<%-- 		foreach遍历数组!!
<% String[] string = {"xuxiang","edward"};
request.setAttribute("name", string);
%>
<c:forEach items="${name}" var="temp" varStatus="vs">  <!-- 循环状态变量varStatus -->
${vs.first}
${temp}
</c:forEach> --%>

<li>使用status:<br />
<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
<s:property /> |
遍历过的元素总数:<s:property value="#status.count" /> |
遍历过的元素索引:<s:property value="#status.index" /> |
当前是偶数?:<s:property value="#status.even" /> |
当前是奇数?:<s:property value="#status.odd" /> |
是第一个元素吗?:<s:property value="#status.first" /> |
是最后一个元素吗?:<s:property value="#status.last" />
<br />
</s:iterator></li>

<!-- 定义map时必须加上一个# -->
<li><s:iterator value="#{1:'a', 2:'b', 3:'c'}">
<s:property value="key" /> | <s:property value="value" />
<br />
</s:iterator></li>

<li><s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
<s:property value="#x.key" /> | <s:property value="#x.value" />
<br />
</s:iterator></li>

<li><s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>

</li>
</ol>

</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: