1、ifelse标签
一共有这三类标签,用法大致相同。
1. < s:if >
2. < s:ifelse >
3. < s:else >
example:
hello.jsp
<form action="hello">
<label >Please pick a name</label><br/>
<select name="name">
<option name="Mike">Mike</option>
<option name="Jason">Jason</option>
<option name="Mark">Mark</option>
</select>
<input type="submit" value="Say Hello"/>
</form>
helloworld.jsp
<body>
<b>Example of If and Else</b><br/>
<s:if test="name == Mike">
You have select Mike
</s:if>
<s:elseif test="name == Jason">
You have select Jason
</s:elseif>
<s:else>
You don't select Mike and Jason
</s:else>
</body>
hello.jsp选择姓名后交提表单,跳转到helloworld.jsp。
在if与else标签中进行判断,输出相应信息。
2、iterator标签
example:
<body>
<b>Example of Iterator Tag</b><br/>
<s:iterator value="employees">
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
<b>Employees sorted by Department</b><br/>
<s:bean name="cn.w3cschool.struts2.DepartmentComparator"
var="deptComparator" />
<s:sort comparator="deptComparator" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:sort>
<br/><br/>
<b>SubSet Tag - Employees working in Recruitment department </b><br/>
<s:subset decider="recruitmentDecider" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:subset>
<br/><br/>
<b>SubSet Tag - Employees working in Accounts department </b><br/>
<s:subset decider="accountsDecider" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:subset>
<br/><br/>
<b>SubSet Tag - Employees 2 and 3 </b><br/>
<s:subset start="1" count="2" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:subset>
</body>
public class Employee extends ActionSupport {
private String name;
private String department;
public Employee(){}
public Employee(String name, String department) {
this.name = name;
this.department = department;
}
private List employees;
private List contractors;
public String execute() {
employees = new ArrayList();
employees.add(new Employee("George","Recruitment"));
employees.add(new Employee("Danielle","Accounts"));
employees.add(new Employee("Melissa","Recruitment"));
employees.add(new Employee("Rose","Accounts"));
contractors = new ArrayList();
contractors.add(new Employee("Mindy","Database"));
contractors.add(new Employee("Vanessa","Network"));
return "success";
}
public Decider getRecruitmentDecider() {
return new Decider() {
public boolean decide(Object element) throws Exception {
Employee employee = (Employee) element;
return employee.getDepartment().equals("Recruitment");
}
};
}
public Decider getAccountsDecider() {
return new Decider() {
public boolean decide(Object element) throws Exception {
Employee employee = (Employee) element;
return employee.getDepartment().equals("Accounts");
}
};
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public List getEmployees() {
return employees;
}
public void setEmployees(List employees) {
this.employees = employees;
}
public List getContractors() {
return contractors;
}
public void setContractors(List contractors) {
this.contractors = contractors;
}
}
创建一个Employee类,同时创建成员变量 List类型的employees与String类型的name和department。
decider="accountsDecider"
该属性比较特别,需要在Employee类中创建方法getAccountsDecider(),注意名字对应不要错误。
public Decider getAccountsDecider() {
return new Decider() {
public boolean decide(Object element) throws Exception {
Employee employee = (Employee) element;
return employee.getDepartment().equals("Accounts");
}
};
}
这段代码需要创建一个DepartmentComparator类,在该类中重写compare方法,进行需要的判断。
<s:bean name="cn.w3cschool.struts2.DepartmentComparator"
var="deptComparator" />
<s:sort comparator="deptComparator" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:sort>
public class DepartmentComparator implements Comparator {
public int compare(Employee e1, Employee e2) {
return e1.getDepartment().compareTo(e2.getDepartment());
}
@Override
public int compare(Object o1, Object o2) {
return 0;
}
}
取子集,从记录从0计数,所以取第二条与第三条记录。
<s:subset start="1" count="2" source="employees">
<s:iterator>
<s:property value="name"/> ,
<s:property value="department"/><br/>
</s:iterator>
</s:subset>

3、merge标签
example:
一样是使用上面的Employee类。
<s:merge var="allemployees">
<s:param value="employees"/>
<s:param value="contractors"/>
</s:merge>
<s:iterator value="allemployees">
<s:property value="name"/>
<s:property value="department"/><br/>
</s:iterator>
merge标签作用为把两个表合成一个表,但是与接下来的append标签有一些不同。
为merge标签添加var属性,即可在其他标签中调用。在merge标签内,param标签指定表,employees与contractors为两个不同表。
4、append标签
example:
一样是使用上面的Employee类。
<s:append var="allemployees">
<s:param value="employees"/>
<s:param value="contractors"/>
</s:append>
<s:iterator value="allemployees">
<s:property value="name"/>
<s:property value="department"/><br/>
</s:iterator>

5、generator标签
example:
<s:generator separator="," val="%{'red, blue, black, pink, white, green'}">
<s:iterator>
<s:property/><br/>
</s:iterator>
</s:generator>
分隔符为‘,’。
网页输出为:

本文深入探讨了Struts2框架中的条件标签(if, ifelse, else)和迭代标签(iterator)的使用方法,通过实例展示了如何在页面上进行条件判断和数据集合的迭代操作。此外,还介绍了merge和append标签的功能区别,以及generator标签的使用场景。
394

被折叠的 条评论
为什么被折叠?



