<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<s:form action="user">
<s:a href="user">进入</s:a>
<!-- 专门取值的标签 (直接写就是取栈顶的元素的值) -->
name:<s:property value="name"/>
age:<s:property value="age"/>
<hr/>
<!-- 使用标签定义一个集合 并取得集合中的第一个元素 -->
<s:set value="{111,222,333}" var="arr"></s:set>
取第一个元素:<s:property value="#arr[0]"/>
<hr/>
<!-- 取session值两个方法 -->
法一:<s:property value="#session.stu"/><br/>
<s:property value="#session['stu']"/><!-- 写法二 -->
<br/>
<!-- 去四大范围中搜索 -->
法二:<s:property value="#attr.stu"/>
<hr/><br/>
<!-- 区request中取值 -->
取request的值:<br/>
struts.view_uri=<s:property value="#request['struts.view_uri']"/><br/>
struts.request_uri=<s:property value="#request['struts.request_uri']"/>
<br/><hr/>
取参数 :<br/>
取得struts.xml的result配置中的参数<br/>
<s:property value="#parameters.id[0]"/>
<br/><hr/>
<!-- % 号 的用法 用于 非 s:property 等取值-->
name:<s:property value="%{name}"/>----
age:<s:property value="%{age}"/>
<br> ------------------------------------- <br>
<hr/><br/>
迭代list:<br/>
<s:iterator value="list">
name:<s:property value="name"/>,
age:<s:property value="age"/><br/>
</s:iterator>
<hr/><br/>
迭代map集合:<br/>
<s:iterator value="map">
key:<s:property value="key"/>,
value:<s:property value="value"/><br/>
</s:iterator>
<hr/><br/>
<!-- 取集合中的单个元素 -->
取集合中的单个:<br/>
<s:property value="map[101]"/>
<br/><hr/>
<!-- 单选按钮 -->
s:if标签输出:<br/>
<s:set var="score" value="72"></s:set>
<s:if test="#score>80">
优秀
</s:if>
<s:elseif test="#score>79">
良好
</s:elseif>
<s:else>
一般
</s:else>
<hr/><br/>
<!-- 集合筛选 -->
集合的筛选:<br/>
<s:iterator value="list.{?#this.age>18}.{?#this.age<20}.{name}" >
<%--<s:property value="name"/>---<s:property value="age"/>--%>
<s:property/>
</s:iterator>
<hr/><br/>
<%--^ 是满足这个条件的最后一个 --%>
^ 指 满足条件的最后一个:<br/>
<s:iterator value="list.{^#this.age>18}">
age:<s:property value="age"/>---name:<s:property value="name"/>
</s:iterator>
<hr/><br/>
<!-- 下拉类表
要先进action 绑定了集合后在进页面
下拉框list就是一个绑定的集合
listKey 就是下拉框option的value
listValue 就是下拉框的
name 为最后提交的那个名字
headerKey 就是下拉框的第一个元素
-->
下拉列表提交的值:<br/>
<s:iterator value="stuId">
<s:property/>
</s:iterator>
<s:select list="list" listKey="age" listValue="name" name="stuId"
headerKey="0" headerValue="--请选择--">
</s:select>
<hr/><br/>
<!-- 复选框 -->
多选框提交的值:<br/>
<s:iterator value="stuId2">
<s:property/>
</s:iterator>
<s:checkboxlist list="list" listKey="age" listValue="name"
name="stuId2">
</s:checkboxlist>
<hr/><br/>
<!-- 单选按钮 -->
单选按钮输出:<br/>
<s:property value="stuId3"/>
<s:radio list="list" listKey="age" listValue="name" name="stuId3"></s:radio>
<hr/><br/>
<s:textfield name="name" label="name"></s:textfield>
<s:textfield name="age" label="age"></s:textfield>
<s:submit></s:submit>
</s:form>
<hr/><br/>
<!-- 调用action 中的方法 ,需要先进action -->
<s:property value="getmyname()"/>
<hr/><br/><br/>
补充:<br/>
<!-- 调用静态方法...需要开启一个全局配置 struts.ognl.allowStaticMethodAccess
访问静态方法 语法:<s:property value="@报名.类名@方法名()"/> -->
调用静态方法...在struts2.0以上的版本需要在struts.xml中开启一个全局配置 struts.ognl.allowStaticMethodAccess:<br/>
<s:property value="@entity.Student@getmethod()"/>
<hr/><br/>
<!-- 此处不能用debug,为什么呢?不知道 -->
<%--<s:debug></s:debug>--%>
</body>
</html>