#
(#是访问非根元素的值,比如#session.username
)<s:debug/>
,查看值栈中的内容<s:debug>
查看此时值栈中的数据
//实现ModelDriven接口<>指定的泛型为JavaBean类
public class LoginAction extends ActionSupport {
private User user;
private String tips;
public String getTips(){
return tips;
}
public void setTips(String tips){
this.tips=tips;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() {
System.out.println("执行execute方法");
System.out.println(this.getUser().getName()+"------"+this.getUser().getPassword());
return SUCCESS;
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:debug></s:debug>
</body>
</html>
<s:property value="">
标签,struts2中的标签在后面再详细讲解,这个标签的意思是输出属性的值
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><s:property value="user.name" default="如果为null,输出这个字段"/></h1>
<h1><s:property value="user.password" default="如果为null,输出这个字段" /></h1>
<h1>输出一个字符串常量: <s:property value="'jack'"/></h1>
<s:debug></s:debug>
</body>
</html>
<s:property value="1"/>
<s:property value="true"/>
<s:set>
标签,因此这个变量不是值栈中的,需要使用#
<!-- 创建list -->
<s:set var="list" value="{1,2,3,'jack',true}"></s:set>
<s:property value="#list[0]"/><br>
<s:property value="#list[4]"/>
#{}
的形式创建,其中存放的是键值对(key-value)的形式 <s:set var="map" value="#{'name':'jack','age':22}"></s:set>
<s:property value="#map['name']"/>
<s:property value="#map.age"/>
<!-- 这里的user一定要和LoginAction中的成员变量User的对象字段相同 -->
User对象中的name属性:<s:property value="user.name"/>
User对象中的age属性:<s:property value="user.age"/>
#
#
访问的是非根属性,就不是值栈中的值,比如#session.username 相当于调用ActionContext.getContext.getSession.getAttribute("username")
<s:url value="#map.name"/>
<br>
<s:url value="%{#map.name}"/>
<s:set var="map" value="#{'name':'jack','age':22}"></s:set>
<s:property value="#map['name']"/>
<!-- 创建一个集合list -->
<s:set var="list" value="{1,2,3,'jack','Tom'}"></s:set>
<s:property value="1 in #list"/><br>
<s:property value="1 not in #list"/><br>
<!-- 没有结果 -->
<s:property value=" 'jack' in #list"/><br>
<s:property value="2+3"/>
<s:property value="'ce'+22"/>
集合的伪属性是用来代替java集合API的方法的属性,比如迭代器的使用
<%--创建列表 --%>
<s:set var="list" value="{1,'陈加兵'}"></s:set>
<%-- 创建Map --%>
<s:set var="map" value="#{'one':'陈加兵','tow':'郑元梅'}"></s:set>
<%-- 创建数组 --%>
<s:set var="number" value="new String[]{'aaa','bbb','ccc']"></s:set>
<%-- 获取list的迭代器对象 --%>
<s:set var="iter" value="#list.iterator"></s:set>
list的大小:<s:property value="#list.size"/>
<s:if test="#iter.hasNext">
list中的第一个元素的值:<s:property value="#iter.next"/>
</s:if>
<hr>
<%-- #map.keys返回的是set类型,然后使用迭代器输出即可 --%>
<s:property value="#map.keys.iterator.next" default="NULL"/>
<s:property value="#map.values"/>
<%--创建列表 --%>
<s:set var="list" value="{1,'陈加兵'}"></s:set>
<%-- 这个{#}首先会取list中的每一个元素然后赋值给tihs,接着调用toString方法转换为字符串 --%>
<s:property value="#list.{#this.toString()}"/>
<%--创建列表 --%>
<s:set var="list" value="{1,2,3}"></s:set>
<%-- 选取大于2的元素组成一个新的集合 --%>
<s:property value="#list.{?#this>2}"/>
[N]
语法了[N].propertyName
可以用来指定从值栈中的从上向下数位置N的action的属性值,N从事0开始的。[1].propertName
User对象中的name:<s:property value="[1].user.name"/>
User对象中的age:<s:property value="[1].user.age"/>
[0].propertyName
,我们也可以使用top,直接top.propertyName
即可#
来获取parameters
用来访问请求参数,比如#parameters.name
, # parameters [‘name’]
相当与request.getParameters(“name”)
request
用来访问request的属性,比如#request.name
或者# request [‘name’]
相当于request,getAttrubute(“name”)session
用来访问session属性,例如 #session.name
或者#session[‘name’]
相当于 session.getAttribute(“name”)application
用来访问application属性,比如:#application.name
相当于application.getAttribute(“name”)attr
用来访问PageContext,如果PageContext不可用,则一次搜索request,session,application对象原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。