java web从零单排第十五期《struts2》控制标签(1)
1.s:if s:elseif s:else 标签其实和java语句的含义是一样的,首先我们查看s:if和s:elseif标签的属性和意义:
test
true
——
boolean
表达式,支持OGNL语言
s:esle标签则没有属性。下面介绍一个例子供同学们参考:创建一个性别的showSex.javapackage controller;public class ShowSex {private String sex;public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String execute(){this.setSex("male");return "showsex";}}在jsp页面中使用s:if标签输出性别:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> <s:if test="sex=='male'">male</s:if> <s:elseif test="sex==female">female</s:elseif> <s:else>...</s:else> </body></html>
struts配置文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd"><struts> <package name="Maybe" extends="struts-default"> <action name="showsex" class="controller.ShowSex"> <result name="showsex">/showsex.jsp</result> </action> </package> </struts>
运行结果:

也可以在标签中使用test属性中使用如下表达式判断是否为空:
2.输出String[ ]中的内容s:iterator 的标签:功能为遍历集合框架,属性和意义如下所示。如果指定status属性,则创建一个IteratorStatus类的实例
并放到值栈中
valuefalse——String被循环的集合包括List,Set,数组和Map集合
var
false——String集合中的每一个元素,并且放到值栈中
begin
false——int起始的索引
end
false——int结束的索引
IteratorStatus对象是当前循环的一些相关信息,主要属性如下所示:index:当前循环的索引。count:循环的次数。first:是否为第一位。even:当前位置是否为偶数。last:是否为最后一个。odd:当前位置是否为偶数。s :iterator标签具有遍历集合元素的功能,s:iterator标签可以和s:property标签结合使用,进行一边遍历一边输出的操作。在action中向String[ ]数组保存数据新建action类ShowStringArray.java
package controller;public class ShowStringArray {private String[] studentList = new String[3];public String[] getStudentList() {return studentList;}public void setStudentList(String[] studentList) {this.studentList = studentList;}public String execute(){studentList[0] = "niujiabin";studentList[1] = "maybe";studentList[2] = "GossipGo";return "showstringarray";}}使用iterator标签输出数组:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> <s:iterator value="studentList" var = "studentName"> <s:property value="studentName"/> </s:iterator> </body></html>
s:iterator标签的value属性代表输出的数据源,该值来源于action中类型为字符串数组String[ ]的变量名studentList,而var存储的是字符串数组String[ ]中的每一个元素。配置文件struts.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd"><struts> <package name="Maybe" extends="struts-default"> <action name="showstringarray" class="controller.ShowStringArray"> <result name="showstringarray">/showstringarray.jsp</result> </action> </package> </struts>运行结果:

3.输出List中JavaBean中的内容新建action类ShowListJavaBean.java
package controller;import java.util.ArrayList;import bean.StudentInfo;public class ShowListJavaBean {private ArrayList listJavaBean = new ArrayList();public ArrayList getListJavaBean() {return listJavaBean;}public void setListJavaBean(ArrayList listJavaBean) {this.listJavaBean = listJavaBean;}public String execute(){StudentInfo student1 = new StudentInfo();StudentInfo student2 = new StudentInfo();StudentInfo student3 = new StudentInfo();student1.setAge(20);student1.setName("niujiabin");student2.setAge(21);student2.setName("maybe");student3.setAge(21);student3.setName("GossipGo");listJavaBean.add(student3);listJavaBean.add(student2);listJavaBean.add(student1);return "showlistjavabean";}}javaBean 类实体:package bean;public class StudentInfo {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}在jsp页面中使用s:iterator标签输出List中存JavaBean的属性
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> 第一种写法: <br> <s:iterator value="listJavaBean"> 姓名:<s:property value="name"/> 年龄:<s:property value="age"/> </s:iterator> <br> 第二种写法: <br> <s:iterator valu="listJavaBean" var="studentJavaBean"> 姓名: <s:property value="#studentJavaBean.name"/> 年龄:<s:property value="#studentJavaBean.age"/> </s:iterator> </body></html>
第一种方法循环时将listJavaBean对象中的每一个元素放到值栈的顶端,所以直接获取即可。第二种方法也放在值栈中,但由于每次遍历的元素是一个JavaBean,所以需要使用#进行反射取值。配置文件struts.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd"><struts> <package name="Maybe" extends="struts-default"> <action name="showlistjavabean" class="controller.ShowListJavaBean"> <result name="showlistjavabean">/showlistjavabean.jsp</result> </action> </package> </struts>
运行结果:
