当前位置: 代码迷 >> Web前端 >> java web从0单排第十五期《struts2》控制标签(1)
  详细解决方案

java web从0单排第十五期《struts2》控制标签(1)

热度:168   发布时间:2013-10-08 16:46:23.0
java web从零单排第十五期《struts2》控制标签(1)
  1.s:if  s:elseif  s:else 标签 其实和java语句的含义是一样的,首先我们查看s:if和s:elseif标签的属性和意义:
属性名 是否必需 默认值 类型 说明介绍

test

true

――

boolean

表达式,支持OGNL语言

  s:esle标签则没有属性。 下面介绍一个例子供同学们参考: 创建一个性别的showSex.java
package 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 false false String

如果指定status属性,则创建一个IteratorStatus类的实例

并放到值栈中

value false ―― 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>


运行结果:
  相关解决方案