private List<Person> persons = new ArrayList<Person>();
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String commontag(){
this.setProductDesc("aa");
this.setProductId(1001);
this.setProductName("intel");
this.setProductPrice(1000d);
Person person5 = new Person("dd",41);
Person person2 = new Person("aa",11);
Person person4 = new Person("cc",31);
Person person3 = new Person("bb",21);
Person person6 = new Person("ee",51);
//想要将对象压入值栈,则需要是对象本身的属性才行,并且要有getxxx setxxx方法
//List<Person> persons = new ArrayList<Person>();
persons.add(person2);
persons.add(person3);
persons.add(person4);
persons.add(person5);
ActionContext.getContext().getValueStack().push(persons);
return "commontag";
}
*property 标签
示例:
输出 Action 属性 customerId 的值:
输出 session 属性 userName 的值:
如果 value 属性没有给出, ValueStack 值栈栈顶对象的值被输出
在许多情况下, JSP EL 可以提供更简洁的语法
url 标签
<s:url value="/getProduct" var="url2">
<!-- 对于value值会自动的进行OGNL解析 -->
<s:param name="productId" value="productId"></s:param>
</s:url>
${url2 }
<br><br>
<s:url value="/getProduct" var="url3">
<!-- 对于value值会自动的进行OGNL解析,若不希望解析,则用单引号再引起来 -->
<s:param name="productId" value="'productId'"></s:param>
</s:url>
${url3 }
<br><br>
<s:url var="url4" action="testAction" namespace="/tag11" method="save">
</s:url>
${url4 }
<br><br>
<s:url var="url5" value="testurl" includeParams="all">
</s:url>
${url5 }
s:url:创建一个URL字符串
/struts2-4/getProduct?productId=1003
/struts2-4/getProduct?productId=1001
/struts2-4/getProduct?productId=productId
/struts2-4/tag11/testAction!save.do
testurl?name=123123
*param 标签
param 标签用来把一个参数传递给包含着它的那个标签
无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 ognl 求值
如果想传递一个 String 类型的字符串作为参数值, 必须把它用单引号括起来.
可以把 value 属性的值写在开始标签和结束标签之间. 利用这种方式来传递一个 EL 表达式的值
*if, else 和 elseif 标签
这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性
s:*if, else 和 elseif 标签.用来进行测试
<!-- 可以直接使用值栈中的值,使用OGNL表达式解析test -->
<br><br>
<s:if test="productPrice > 1000">
i7
</s:if>
<s:elseif test="productPrice > 800">
i5
</s:elseif>
<s:else>
i3
</s:else>
iterator 标签
*iterator 标签:iterator 标签用来遍历一个数组, Collection 或一个 Map, 并把这个可遍历对象里的每一个元素依次压入和弹出 ValueStack 栈
在开始执行时, iterator 标签会先把 IteratorStatus 类的一个实例压入 ContextMap, 并在每次遍历循环时更新它. 可以将一个指向 IteratorStatus 对象的变量赋给 status 属性.
<%
Person person2 = new Person("aa",11);
Person person3 = new Person("bb",21);
Person person4 = new Person("cc",31);
Person person5 = new Person("dd",41);
Person person6 = new Person("ee",51);
List<Person> persons = new ArrayList<Person>();
persons.add(person2);
persons.add(person3);
persons.add(person4);
persons.add(person5);
request.setAttribute("persons", persons);
%>
<br><br>
<s:iterator value="#request.persons" var="person" status="status">
${status.index} -- ${name } -- ${age }<br>
</s:iterator>
<br><br>
<s:iterator value="persons" >
${name }- ${age }<br>
</s:iterator>
sort 标签要有一个对比器实现Comparator
*sort 标签:
sort 标签用来对一个可遍历对象里的元素进行排序.
<br><br>
<%
PersonComparator pc = new PersonComparator();
request.setAttribute("pc", pc);
%>
<s:sort comparator="#request.pc" source="persons" var="persons"></s:sort>
<s:iterator value="persons" >
${name }- ${age }<br>
</s:iterator>
public class PersonComparator implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
// TODO Auto-generated method stub
return o1.getName().compareTo(o2.getName());
}
}
*date 标签
date:date 标签用来对 Date 对象进行排版
<%
Date date = new Date();
session.setAttribute("date", date);
%>
<br><br>
<s:date format="yyyy-MM-dd HH-mm-ss" name="#session.date" var="date2"></s:date>
${date2 }
<br><br>
a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.
<br><br>
<s:iterator value="persons" >
<s:a href="getPerson.action?name=%{name}">${name }</s:a><br>
</s:iterator>